C++试卷

第421题

下列关于抽象类的表述中正确的是()。

第422题

 假定TestClass为一个类,则该类的拷贝构造函数的声明语句为()。

第423题

对虚函数的调用()。

第424题

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

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

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

#include<iostream>
using namespace std;
class A
{
public:
    A(int i,int j)
    {
        a=i;
        b=j;
    }
    void move(int x,int y)
    {
        a+=x;
        b+=y;
    }
    void show()
    {
        cout<<a<<","<<b<<endl;
    }
private:
    int a,b;
};
class B:private A
{
public:
    B(int i,int j):A(i,j){}
    void fun()
    {
        move(3,5);
    }
    void f1()
    {
        A::show();
    }
};
int main()
{
    B d(3,4);
    d.fun();
    d.f1();
    return 0;
}
第426题

有如下程序,执行这个程序,屏幕上将显示输出()。

#include<iostream>
using namespace std;
class TestClass
{
protected:
    TestClass(){cout<<"x";}
    TestClass(char c){cout<<c;}
};
class TestClass1:public TestClass
{
public:
    TestClass1(char c){cout<<c;}
};
int main()
{
    TestClass1 d1('y');
    return 0;
}
第427题

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

第428题

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

#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;
}
第429题

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

第430题

下面叙述错误的是()。

第431题

列程序的输出结果为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;
}
第432题

要使程序执行后的输出结果为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;}
第433题

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

第434题

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

第435题

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

第436题

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

#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;
}
第437题

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

第438题

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

#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;
}
第439题

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

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

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

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

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