1、构造函数不能被声明为虚函数,析构函数可以被声明为虚函数。
(虚函数的参数类型 顺序 个数必须一样)
构造函数可以被重载,析构函数不可以被重载。
2、子对象不可以是自身类的对象。
因为此使对象所属的类并没有定义好。
3、这一条来自这个地方
1)用const修饰定义的对象为常对象
两种声明方式:
const point point1(10,10);
point const point2(10,10);
2)用const修饰的声明数据成员成为常数据成员
变量或对象被const修饰后其值不能被更新(除非数据成员被mutable修饰时,用const修饰
的变量或者对象要进行初始化。
说明:
任何函数都不能对常数据成员进行赋值
构造函数对常数据成员进行初始化时也只能通过初始化列表进行
常数据成员在定义时必须初始化
如果类有多个默认构造函数必须都初始化常数据成员
不能对常数据成员在类中初始化
3)常成员函数
const是函数类型的一部分,在实现部分也要带该关键字
const关键字可以用于对重载函数的区分
常成员函数不能更新任何数据成员,也不能调用该类中没有用const 修饰的成员函数,
只能调用常成员函数和常数据成员。
常成员函数可以被其他成员函数调用
但是不能调用其他非常成员函数
可以调用其他常成员函数
常对象只能调用常成员函数
常成员函数只能调用其他常成员函数
4、一个类的友元函数或友元类可以访问该类的所有成员
5、
this指针是指向对象的
this是一个由系统自动生成的指针
this指针在用对象引用成员函数时系统创建的
this指针既可以隐含使用也可以显示使用
6、
若要对Data类中重载的加法运算符成员函数进行声明,下列选项中正确的是( )。
B.Data+(Data);
C.Data+operator(Data);
D.operator+(Data, (Data);
7、
已知:const A a; 其中A是一个类名,指向常对象指针的表示为( )。
A.const *pa A;
B.const * A pa;
C.const A *pa; 对的
D.A * const pa;
8、
下列关于多继承二义性的描述中,错误的是( )
- A.解决二义性的方法是采用类名限定
- B.基类和派生类中同时出现同名成员时,会产生二义性(选这个)
- C.一个派生类有多个基类,而这些基类又有一个共同的基类,派生类访问公共基类成员时,可能出现二义性
-
D.一个派生类的多个基类中出现了同名成员时,派生类对同名成员的访问可能出现二义性、、、、
9、多态调用是指( )。
A.借助于指向对象的基类指针或引用调用一个虚函数 √
B.借助于指向对象的基类指针或引用调用一个纯虚函
C.以任何方式调用一个纯虚函数
D.以任何方式调用一个虚函数
10、基类的子对象不能在派生类的构造函数的参数初始化列表中初始化。
11、
虚函数具有继承性
虚函数是一个成员函数
在类的继承的层次结构中,虚函数是说明相同的函数
静态成员函数不可以说明为虚函数
12、
下列关于多继承二义性的描述中,错误的是( )
A.解决二义性的方法是采用类名限定
B.基类和派生类中同时出现同名成员时,会产生二义性 √
C.一个派生类有多个基类,而这些基类又有一个共同的基类,派生类访问公共基类成员时,可能出现二义性
D.一个派生类的多个基类中出现了同名成员时,派生类对同名成员的访问可能出现二义性
13、必须使用参数初始化表的三种情况:
情况一、需要初始化的数据成员是对象的情况(这里包含了继承情况下,通过显示调用父类的构造函数对父类数据成员进行初始化);
情况二、需要初始化const修饰的类成员或初始化引用成员数据;
情况三、子类初始化父类的私有成员;