☰
类和对象下:初始化列表,static成员,
2026/10/12 1:57:29 网站建设 项目流程

禁止转换的发生。

引用成员变量,const成员变量,没有默认构造的类型变量必须用初始化列表初始化

每个类都必须有一个拷贝初始化构造函数,如果类中没有说明拷贝构造函数,则编译器系统会自动生成一个缺省拷贝构造函数,作为该类的保护成员

没开空间,相当于缺省值。

初始化列表的顺序是跟声明顺序一致的,也是内存存储的先后顺序。


局部 + static:变量不销毁,只初始化一次
全局 / 函数 + static:只能本文件用
类成员 + static:属于类,所有对象共享

static 一写,就归类管,
所有对象共享,
不占对象空间,
变量要类外初始化,
函数不能碰普通成员。

析构顺序b>a>d>c。

编译器习惯想上找,需要有前置声明

sum为solution服务

匿名对象用作单独的函数调用非常方便,上面是有名对象,下面是匿名对象,匿名对象的生命周期只在当前这一行。

sort默认为是升序,需要在第三个参数调整

后两者直接构造省去了拷贝,是编译器特有的优化行为。

正常先析构aa再析构临时拷贝生成的对象。

省区了临时对象没aa,直接构造临时对象。

省去了ret的构造,直接把aa的内存放到了ret上。

A(int a) // ① 构造 aa

A(const A& aa) // ② 拷贝构造返回值临时对象

~A() // ③ 析构 aa

A& operator=() // ④ 临时对象赋值给 ret

~A() // ⑤ 析构临时对象

Print()
~A() // ⑥ 析构 ret

aa没在f2调用结束后析构,充当了临时对象。

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

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

立即咨询