11.重载与覆盖,覆盖能不能用virtual
答: https://blog.csdn.net/u010246947/article/details/80168950
12.访问限制符
答:
(1)public成员:能被本类的成员函数(不管是哪一种控制符声明的成员函数,都可以)、友元函数、本类的对象、其派生类的成员函数(不管是哪一种控制符声明的成员函数,都可以);
(2)protected成员:能被本类的成员函数(不管是哪一种控制符声明的成员函数,都可以)、友元函数、其派生类的成员函数(不管是哪一种控制符声明的成员函数,都可以);
(3)private成员:能被本类的成员函数(不管是哪一种控制符声明的成员函数,都可以)、友元函数;
通过以上介绍,可以总结为:
(1)对类的用户而言,即使用类对象实例的人(还有一种说法就是指只能看到类的头文件的人,因为设计类的人都将他写的实现文件编译成了二进制文件,在Windows下是.lib、.obj后缀的文件),通过类对象实例,只能访问到类的public成员(函数或变量);
(2)对类本身而言,即类的设计者,在设计类的过程中,他可以通过类的所有的成员函数(三种控制符声明),或者友元函数访问其类内部所有的成员(函数或变量),不管其要该成员(函数或变量)是用哪一种控制符声明的,都可以访问。
(3)对该类的派生类而言,到这里只能说基类的public、protected的成员对它来说是可见的,即可以访问,但具体怎么访问,这涉及到了C++类继承的知识,接下来会重点解释这一条。
13.引用和指针
答:Prime书上有。
https://www.cnblogs.com/gxcdream/p/4805612.html
14.默认参数算重载吗?
答:算重载,但要注意二义性
重载函数与默认参数重叠导致的二义性问题:
func(int); //重载函数1,只有1个参数,无默认参数
func(int, int =4); //重载函数2,有2个参数,有1个默认参数
func(int a=3, int b=4, int c=6); //重载函数3,有3个参数,有3个默认参数
fucn(float a=3.0, float b=4.0 float c=5.0); //重载函数4,有3个参数,有3个默认参数
fucn(float a=3.0, float b=4.0 float c=5.0 float d=7.9 ); //重载函数5,有4个参数,有4个默认参数
func(2); //可调用前3个函数,出现二义性
func(2.0); //可调用后2个函数,出现二义性
15.指针和引用
答: https://www.cnblogs.com/gxcdream/p/4805612.html
1.指针是对象,引用为别名
2.指针不用初始化,引用需要初始化
3.指针可以随时改变所指的对象,引用不能改变。
4.程序为指针分配内存,不为引用分配内存
5.引用没有const,指针有const,const的指针不可变;
6.引用是类型安全的,而指针不是(引用比指针多了类型检查)
16.全局 静态 局部
答: https://www.cnblogs.com/secondtonone1/p/5694436.html
17. 在main函数中定义了a和b两个int变量,调用sum函数求其和,说一下其压栈过程
答:
https://blog.csdn.net/Quinn0918/article/details/70258234
https://blog.csdn.net/Dawn_sf/article/details/53727844
18.堆与栈的区别
答: https://blog.csdn.net/hairetz/article/details/4141043
19.C++析构和构造的顺序,为什么析构函数最好是虚函数
答: https://www.cnblogs.com/Aion/p/3429515.html 析构和构造的顺序
https://www.cnblogs.com/zhice163/archive/2012/07/10/2584835.html 为什么析构函数最好是虚函数
20.虚函数和虚函数表
答: https://blog.csdn.net/haoel/article/details/1948051#commentsedit
21.智能指针了解吗,全部都讲一下怎么用,会出现什么问题
答:auto share unique weak
https://blog.csdn.net/shaderdx/article/details/84101844
weak_prt解决循环引用
https://blog.csdn.net/leichaowen/article/details/53064294