拷贝构造和赋值构造的发生时机
拷贝构造和赋值构造的发生时机
Test gt1; // 1
int main(){
Test t1; //无参构造函数 3
Test t2(t1); //拷贝构造 4
Test t3 = t2;//拷贝构造 5
static Test st = Test(); //静态局部变量的内存空间在运行时已经存在 6
//但其构造初始化要到运行到语句所在处才开始
// Test(20) 显式生成临时对象(出语句即析构)
Test t4 = Test(20);// <==> Test t4(20) 原因在于编译器的优化 只会发生一次构造 7
t4 = t2; //赋值函数 8
t4 = Test(30); //会发生两次调用 构造临时对象+赋值函数 出语句析构临时变量 9
t4 = (Test)30; //int->Test(int) 类型转换需要一个合适的参数类型的构造函数 10
t4 = 30; //同上但为隐式 11
Test *p1 = new Test(30); //出语句不析构 堆上的对象在delete时析构
Test *p2 = new Test[2];
Test *p = &Test(40);
// p point to a object which has been disconstruct
const Test &ref = Test(50);
// 引用延长了临时变量的生命周期
}
Test gt2; // 2
对象使用过程中背后调用了哪些方法

浙公网安备 33010602011771号