c++复习

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类中重载的加法运算符成员函数进行声明,下列选项中正确的是(    )。

A.Data operator+(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修饰的类成员或初始化引用成员数据;

   情况三、子类初始化父类的私有成员;

原文地址:https://www.cnblogs.com/zzyh/p/12076082.html