1.关于C++构造函数,下面说法错误的是()。C
A)构造函数可以被重载。
B)构造函数在创建对象时自动调用。
C)定义派生类时,派生类的构造函数必须包含积基类构造函数。
派生类的构造函数可以选择隐式调用基类的构造函数,如果没有显式提供,会调用基类的默认构造函数。
D)构造函数是public成员.
2.关于继承,下列说法错误的是()C
A)构造基类时应决定使用protected成员还是private成员,继承时将会影响派生类得访问。
B)用private关键字派生类意味着基类的public成员称为派生类的private成员。
C)用protected关键字派生类意味着基类的protected成员称为派生类的private成员。
使用private继承,父类的所有方法在子类中变为private 使用protected继承,父类的protected和public方法在子类中变为protected,privtate方法不变 使用public继承,父类中的方法属性不发生改变
D)多继承使一个类可以继承多个基类的特性。
3.关于析构函数,下列描述错误的是()D
A)当变量超出其说明的作用域时,析构函数将被隐式调用。
B)对全局变量,析构函数在main函数作为退出过程的一部分被调用
C)析构函数的调用次序和构造函数调用次序恰好相反
D)指向对象的指针超出作用域时,析构函数将被隐含调用
指向对象的指针超出作用域并不会自动调用析构函数,只有在调用delete时才会被调用。
4.关于引用和指针,下列说法错误的是()B
A)引用必须被初始化。
B)引用初始化以后可以被改变 不可以被改变
C)指针可以改变所指向的对象。
D)不存在指向空值的引用,但是存在指向空值的指针。
5.一个函数带有参数说明时,则参数的默认值应该在( )中给出B
A)函数定义
B)函数声明
C)函数定义或声明
D)函数调用
6.对于C++中类(class)与结构(struct)的描述正确的是(A)
A)类中的成员默认是private的,但是可以声明为public。
B)结构中不允许定义成员函数,但类中可以定义成员函数。
结构体和类都可以定义成员函数
C)结构实例使用malloc动态创建,类对象使用new操作符动态分配内存
结构体和类使用malloc和new都可以
D)结构和对象都必须使用new创建。
E)结构中不可以存在继承关系,但是类可以存在继承关系。
结构体和类都具有继承关系
F)结构中不可以定义虚函数,但是类中可以定义虚函数。
结构体也可以定义虚函数
结构体和类的异同
7.两个互相独立的类classA和classB,都各自定义了非静态的公有成员函数PublicFunc()和非静态的私有成员函数PrivateFunc();现在要在classA中增加
定义一个成员函数classA::AdditionalPunction(classA a,classB b);则可以在AdditionalPunction(classA x,classB y)的实现部分(函数功能内部)出
现的合法表达式最全的是: D
A)x.PrivateFunc();x.PublicFunc();y.PrivateFunc();y.PublicFunc();
B)x.PrivateFunc();x.PublicFunc();y.PublicFunc();
C)x.PrivateFunc();y.PrivateFunc();y.PublicFunc();
D)x.PublicFunc();y.PublicFunc();
不能访问私有成员函数和属性
8.以下代码输出结果是什么?B
\
#include <iostream> using namespace std; class parent { public: virtual void foo(){cout<<"foo from parent";} void foo1(){cout<<"foo1 from parent";} }; class Son : public parent { public: void foo(){cout<<"foo from Son";} void foo1(){cout<<"foo1 from Son";} }; int main() { parent *p = new Son(); p->foo(); p->foo1(); return 0; }
A.foo from parent foo1 from Son
B.foo from Son foo1 from parent
C.foo from Son foo1 from Son
D.Cannot compile
9.以下代码输出结果是什么?B
#include <iostream>
using namespace std;
class A
{
public: void virtual f(){ cout<<"A"<<endl;}
};
class B : public A
{
public: void virtual f(){cout<<"B"<<endl;}
};
int main()
{
A *pa = new A();
pa->f();
B *pb = (B *)pa;
pb->f();
delete pa,pb;
pa = new B();
pa->f();
pb = (B*)pa;
pb->f();
return 0;
}
A.AABA
B.AABB
C.AAAB
D.ABBA
10.关于类下列哪个描述 是错误的? D
A)类是对象的设计蓝图
B)我们用关键字来创建一个类的结构 class
C)一旦一个类被声明,这个类可以用做一个类型名来声明变量
D)类和结构一样两者没有任何区别 默认访问权限
11.下面关于面向对象技术的叙述哪个是错误的? B
A)面向对象的关键特点是使用软件来对对象编程
B)面向对象的特点和面向过程的特点是一样的重点在于一步步的过程
C)面向对象提供了很多优势,简易化,模块化,易修改性,扩展性等
D)面向对象的关键特点是数据和过程的附加
12.下列关于构造函数的描述中,错误的是()D
A.构造函数可以设置默认的参数
B.构造函数在定义类对象的自动执