思维导图
模拟面试
1.友元的作用
答:通过关键字friend,可以让一些函数或者类,可以访问一个类中的私有数据成员。
2.匿名对象的作用
答:匿名对象就是没有名字的对象,是用来给有名对象进行初始化工作的。
3.常成员函数和常对象的作用
答:1.在成员函数()后面加上const表示是一个常成员函数表明该成员函数中数据成员不可被改变;
2.如果非要修改常成员函数中的某个数据成员的值,可以使用mutable关键字进行修饰;
3.在实例化的对象前加const表示是一个常对象,表明该对象中的数据成员不可被改变。
4.何为运算符重载
答:就是对运算符的重新定义,赋予另一种功能,以适应不同的数据类型。
5.静态成员的特点
答:1.静态成员分为静态数据成员和静态成员函数,在成员函数前加static修饰是静态数据成员;
2.静态成员属于类,但不属于类的某个对象,他们在类的所有对象中是共享的;
3.静态数据成员必须在类外进行初始化;
4.静态成员函数只能访问静态数据成员,不可访问非静态数据成员。
6.如果父类中的一个数据成员访问权限是private,经过public继承到子类中,该数据成员的访问权限是什么
答:不可访问
7.何为菱形继承
答:菱形继承又叫钻石继承,由公共基类派生出多个中间子类,又由这些中间子类共同派生出汇聚子类。
产生的问题:
1.汇聚子类会得到多份由中间子类从公共基类继承下来的数据成员,造成空间浪费;
2.会对公共基类进行多次初始化或多次释放。
8.虚继承的作用
答:解决菱形继承产生的问题
9.C++中多态的概念
答:父类的指针或引用,可以指向或初始化子类的对象,调用子类对父类的重写函数,进而拓展子类的功能。
10.实现多态的重要机制
答:虚指针和虚函数表。虚指针用来存储虚函数表的起始地址;虚函数表用来存储虚函数。
11.虚析构函数的作用
答:正确引导子类释放自己的空间。
12.如何定义一个抽象类
答:在类中至少写一个纯虚函数。