面试相关

笔记积累    ——————————2018年11月8日————————

1、成员变量初始化问题:(https://blog.youkuaiyun.com/no_sying_nothing/article/details/51958547  )

总结:

1.成员变量在使用初始化列表初始化时,与构造函数中初始化成员列表的顺序无关,只与定义成员变量的顺序有关。

2.如果不使用初始化列表初始化,在构造函数内初始化时,此时与成员变量在构造函数中的位置有关。

3.类中const成员常量必须在构造函数初始化列表中初始化。

4.类中static成员变量,只能在类内外初始化(同一类的所有实例共享静态成员变量)。
 

2、如果写的函数需要传入一个指针,是否需要为该指针加上一个const,把const加在指针的不同位置是否有区别?

答:const是来声明一个常量,当不想让值修改时就用const.

(指针前需要加入一个const,const的作用是防止指针在函数体内被意外修改)

当const修饰指针时:

     int b=100;

     const int*a=&b;    [1]

     int const *a=&b;   [2]

     int* const a=&b;   [3 ]

     const  int* const  a=&b;  [4]

如果const位于星号的左侧,则const就是用来修饰指针所指向的变量,即指针指向为常量;因此,[1]和[2]的情况相同,都是指针所指向的内容为常量(const放在变量声明符的位置无关),这种情况下不允许对内容进行更改操作,如不能*a=3;

如果const位于星号的右侧,const就是修饰指针本身,即指针本身是常量,[3]为指针本身是常量,而指针所指向的内容不是常量,。这种情况下不能对指针本身更改操作,如a++是错误的;

[4]为指针本身和指向的内容均为常量。

拓展问题:如果写的函数需要传入的参数是一个复杂类型的实例,面试官可能会问传入值参数或者引用参数有什么区别,什么时候需要为传入的引用参数加上const?

答案:https://blog.youkuaiyun.com/bianlongpeng/article/details/77199272

对于非内部数据类型的输入参数,应该将“值传递”改为“const”引用,目的是提高效率,如将void Func(A a)改为void Fun(const A &a).

第二,对于内部数据类型的输入参数,不需要将“值传递”方式改为“const引用传递”,否则可能降低了函数的可理解性,如void func(int x) 不应该改为void Func(const int&x)

返回值问题 参加以上博客

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值