C++面试问题汇总Day3

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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值