C++知识点总结

来源:互联网 发布:图书馆管理数据流程 编辑:程序博客网 时间:2024/05/07 07:01

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
原创粉丝点击