C++小知识点
2026/6/7 15:53:12 网站建设 项目流程

一、const

1、放在成员函数列表的后面

2、const实际修饰该成员函数隐含的this指针,表明在该成员函数中不能对类的任何成员进行修饰

Date* const this---->const Date* const this

3、所有不修改的成员函数都需要加,可以检查出将‘==’写成‘=’导致的错误

二、取地址运算符重载

取地址运算符重载分为普通取地址重载和const取地址重载,一般这两个编译器自动生成的就够我们使用了,不需要显示实现。除非有坏心思,不想让别人取到当前类的地址,就可以自己实现并胡乱返回一个地址

下面是这两个函数(一般不用写)

那么就来说说怎么使坏吧,下面呢是正常地址

如果我们这样做

那么

就会返回一个错误的地址了,就可以整蛊同学/事了。

三、类型转换

2构造一个A的临时对象,再用这个临时对象拷贝构造aa2,编译器遇到连续构造+拷贝构造————>优化为直接拷贝

四、再探构造函数

1、初始化列表以一个冒号开始,接着是以一个逗号分隔的数据成员列表,每个成员变量后面跟着一个放在括号中的初始值或表达式

下面这两个必须在初始化列表中,还有一个是没有合适默认构造函数可用。其他的可以函数体也可以初始化列表,两者也可以同时出现

2、

每个成员变量在初始化列表中只能出现一次

3、有的的变量也可以不初始化

结果就是

4、再看下面这个图

这依然是声明,不是定义,后面的1是缺省值 ,给初始化列表使用

5、尽可能使用初始化列表

每个成员都要走初始化列表

1>在初始化列表初始化的成员

2>没有在初始化列表的成员

a.声明的地方有缺省值用缺省值

b.没有缺省值

x.内置类型:不确定,看编译器,大概率随机值

y.自定义类型:调用默认构造,没有默认构造就编译报错

3>引用const没有默认构造自定义 必须在初始化列表初始化

6、初始化列表中按照成员变量在类中声明顺序进行初始化,跟成员在初始化列表出现的先后顺序无关。建议声明顺序和在初始化列表的顺序保持一致 。看下面这个题

这段代码先声明了_a2,先走,_a2(_a1),而此时_a1还未初始化,所以是随机值,再走,_a1(a),a是1则_a1的值为1

trying to do better!!!

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询