类和对象

第61题

下面是关于派生类声明的开始部分,其中正确的是()。

第62题

若有以下程序,则该程序运行后的输出结果是()。

#include<iostream>
using namespace std;
class TestClass
{
public:
    void who(){cout<<"TestClass"<<endl;}
};
class TestClass1:public TestClass
{
public:
    void who(){cout<<"TestClass1"<<endl;}
};
int main()
{
    TestClass *p;
    TestClass1 obj1;
    p=&obj1;
    p->who();
    return 0;
}
第63题

下列有关继承和派生的叙述中,正确的是()。

第64题

下面叙述错误的是()。

第65题

列程序的输出结果为2,横线处应添加语句()。

#include<iostream>
using namespace std;
class TestClass1
{
public:
    ______ void fun(){cout<<1;}
};
class TestClass2:public TestClass1
{
public:
    void fun(){cout<<2;}
};
int main()
{
    TestClass1 *p=new TestClass2;
    p->fun();
    delete p;
    return 0;
}
第66题

要使程序执行后的输出结果为ABCD,应在横线处添加语句()。

#include<iostream>
using namespace std;
class A
{
public:A(){cout<<"A";}
};
class B:______
{
public:B(){cout<<"B";}
};
class C:virtual public A
{
public:C(){cout<<"C";}
};
class D:public B,public C
{
public:D(){cout<<"D";}
};
void main(){D obj;}
第67题

下面的描述中,正确的是()。

第68题

下列说法中错误的是()。

第69题

多继承的构造顺序可分为四步:①所有非虚基类的构造函数按照它们被继承的顺序构造;②所有虚基类的构造函数按照它们被继承的顺序构造;③所有子对象的构造函数按照它们声明的顺序构造;④派生类自己的构造函数体。这四个步骤的正确顺序是()。

第70题

设有以下定义和程序,则以下不合语法的调用语句是()。

#include<iostream.h>
class A1
{
public:
    void show1()
    {
        cout<<"class A1"<<endl;
    }
};
class A2:public A1
{
public:
    void show2()
    {
        cout<<"class A2"<<endl;
    }
};
class A3:protected A2
{
public:
    void show3()
    {
        cout<<"class"<<endl;
    }
};
void main()
{
    A1 obj1;
    A2 obj2;
    A3 obj3;
}
第71题

下列关于派生类构造函数和析构函数的说法中,错误的是()。

第72题

有如下程序,执行这个程序的输出结果是()。

#include<iostream>
using namespace std;
class TestClass1
{
public:
    TestClass1(){cout<<"TestClass1";}
    ~TestClass1(){cout<<"~TestClass1";}
};
class TestClass2:public TestClass1
{
    TestClass1 *p;
public:
    TestClass2(){cout<<"TestClass2";p=new TestClass1();}
    ~TestClass2(){cout<<"~TestClass2";delete p;}
};
int main()
{
    TestClass2 obj;
    return 0;
}
第73题

有如下类说明,在构造函数TestClass1的下列定义中,正确的是()。

class TestClass
{
    int x;
public:
    TestClass (int n){x=n;}
};
class TestClass1:public TestClass {
    int y;
public:
    TestClass1 (int a,int b);
};
第74题

声明派生类时,已知有如下定义:

class TestClass{
protected:
    void fun(){}
};
class TestClass1:TestClass{};

则TestClass类中的成员函数fun(),在TestClass1中的访问权限是()。


第75题

下面叙述错误的是()。

第76题

关于虚函数,以下说法正确的是()。

第77题

下列关于纯虚函数与抽象类的描述中,错误的是()。

第78题

有如下类定义,类MyDERIVED中保护的数据成员和成员函数的个数是()。

class MyBASE
{
    int k;
public:
    void set(int n){k=n;}
    int get()const{return k;}
};
class MyDERIVED:protected MyBASE
{
protected:
    int j;
public:
    void set(int m,int n){MyBASE::set(m);j=n;}
    int get()const{return MyBASE::get()+j;}
};
第79题

下列关于继承的描述中,错误的是()。

第80题

有如下程序,执行上面的程序将输出()。

class YY:public XX
{
public:
    ~YY()
    {
        cout<<"YY";
    }
    void f()const
    {
        cout<<k;XX::f();
    }
};
int main()
{
    XX &p=*new YY;
    p.f();
    delete &p;
    return 0;
}