拷贝构造与赋值运算符重载(顺序)
来源:互联网 发布:中国产业数据 编辑:程序博客网 时间:2024/05/21 19:32
other->l类类型 :找到合适的构造函数生成该类的对象(如果找不到实例化对象失败)
隐式调用构造函数 显示调用函数(无名对象(零时对象))
赋值运算符重载函数
分为3步
第一步 判断是不是自身赋值(防止失败出错)
第二步 释放this指针所指的(外部)空间的大小
第三步重新分配空间 拷贝数据;
对象的生存周期
全局对象和静态对象的生存周期最长
临时变量的生存周期只在该条语句结束后结束
但是有一中情况是特例
Goods &p=Good(); 无名对象变为有名对象
所以生存周期是栈上的周期
用一个零时变量拷贝构造对象时编译器会自己处理成一个构造函数
Goods p=Good();这个东西会处理为 GOOD P(); 如果实参是对象 形参是对象 是拷贝构造
如果是实参是临时对象形参是对象 是构造
如果实参是零时对象形参是引用 是拷贝构造
内置类型产生的临时量都是const
自定义产生的是变量
隐式调用产生的是cosnst对象
堆上开辟的对象 当调用玩那delete后析构
例子
Test t1(10, 10);
int main()
{
Test t2(20, 20);
Test t3=t2;
static Test t4 = Test(30, 30);
t2 = Test(40, 40);
t2 = (Test)(50, 50);
t2 = 60;
Test *p1 = new Test(70, 70);
Test *p2 = new Test[2];
Test *p3 = &Test(80, 80);
Test &p4 = Test(90, 90);
delete p1;
delete []p2;
return 0;
}
Test t5(100, 100);
顺序: 构造全局对象t1
构造全局对象t5
构造全局对象t2
拷贝构造对象t3
构造对象t4
构造零时变量
赋值
析构零时变量
隐式调用构造
赋值
析构零时变量
构造堆上的变量
构造两个堆上的变量
构造一个零时变量
析构零时变量
构造零时变量 给个p4 名字
析构p1;
析构p2;
析构p4
析构t3
析构t2
析构t4
析构t5
析构t1
- 拷贝构造与赋值运算符重载(顺序)
- c++ 实现动态顺序表(拷贝构造 赋值运算符重载等操作)
- c++ 实现动态顺序表(拷贝构造 赋值运算符重载等操作)
- 重载赋值运算符与拷贝构造函数的区别
- 拷贝构造函数与赋值运算符重载的区别
- 拷贝构造函数与赋值运算符重载的区别
- 重载赋值运算符与拷贝构造函数的区别
- 重载赋值运算符与拷贝构造函数的区别
- 拷贝构造函数与赋值运算符重载的区别
- 拷贝构造函数与赋值运算符的重载函数
- 拷贝构造&&赋值运算符重载
- 拷贝构造函数/重载赋值运算符
- 什么时候需要重载拷贝构造函数(赋值运算符)!
- 拷贝构造函数,类的赋值运算符重载,深拷贝与浅拷贝
- c++拷贝构造函数、赋值运算符=重载、深拷贝与浅拷贝
- 拷贝构造函数&构造函数&重载赋值运算符
- 拷贝构造函数&构造函数&重载赋值运算符
- 拷贝构造函数与赋值运算符
- linux简介
- 2.5>>迷宫
- java基础第一章_常量
- Oracle基本操作十一:游标
- 《数据压缩》实验报告四·DPCM编解码
- 拷贝构造与赋值运算符重载(顺序)
- 图 续3
- 我的笔记
- 两种方法实现语句反向
- 数据压缩实验4-DPCM编码
- 安全开发相关注意事项
- QT涂鸦窗口/写字板
- BCL(基本类库)和FCL(框架类库)
- linux下安装MySQL