C++知识点总结

1.为何使用列表初始化?

出于性能的考虑,对于内置类型区别不大,而对于类类型,在构造体内赋值首先调用默认构造函数,再进行赋值操作,而列表初始化则省略了赋值操作。

2.哪些东西必须放在初始化列表中?

①常量成员,因为常量成员只能初始化不能赋值

②引用,引用必须在定义的时候初始化,并且不能赋值

③没有默认构造函数的类类型,因为使用初始化列表可以不必调用默认构造函数来初始化,而是直接调用拷贝构造函数初始化

3.struct和class区别

唯一的区别是默认的访问区别,struct默认是public,class默认是private

4.可变数据成员

我们希望能够修改类的某个数据成员,即使是在一个const成员函数内,可以在变量声明中加入mutable关键字。

5.explicit关键字

将构造函数声明为explicit抑制构造函数的隐式转换,只对一个实参的构造函数有效,需要多个实参的构造函数不能用于执行隐式转换,所以无需将这些构造函数声明为explicit的。只能在类内声明构造函数时使用explicit关键字 ,在类外定义时不应该重复。

6.为什么静态成员函数不能声明成const?

因为static成员不是任何对象的组成部分,所以static成员不能被声明为const,毕竟将成员声明为const就是承诺不会修改该函数所属对象

7.绝对不要重新定义继承而来的non-virtual函数

如果在子类中重新定义继承而来的非虚函数,那么调用该函数的版本取决于指向该对象之指针当初声明的类型。因为非虚函数是静态绑定的,一旦被声明为指向父类的指针,那么调用的函数版本永远是父类的函数版本,同理子类。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值