第八天2017/04/17(1、拷贝构造、❤临时对象)
2017-04-17 19:42
176 查看
调用拷贝构造函数的三种case
1. MyPoint p2 = p1; MyPoint p2(p1); case1中的重点:MyPoint p3 = MyPoint(3,3); //此时:C++编译器进行优化, //只调用一次构造函数(并不涉及拷贝构造函数的调用) 2. 形参:类对象,实参:类对象 3. 返回值:类对象 /*总结与技巧: 一定要区分等号的两种含义:其中一种是拷贝、另外一种是简单赋值。 临时对象析构的时间是遇到主调函数中的第一个分号“;”。 */ #include <iostream> using namespace std; class MyPoint { public: MyPoint() { cout<<(int)this<<"构造函数"<<endl; } MyPoint(const MyPoint& obj) { cout<<(int)this<<"拷贝构造函数"<<endl; } MyPoint& operator=(const MyPoint& obj) { cout<<"赋值等号操作"<<endl; return *this; } ~MyPoint() { cout<<(int)this<<"析构函数"<<endl; } }; void f1(MyPoint p) { } MyPoint f2() { MyPoint p; return p; } int main() { //case1: MyPoint p1; //构造函数 MyPoint p2 = p1; //MyPoint p2(p1); //拷贝构造函数 //case1中的重点 MyPoint p3 = MyPoint(); //【重点】C++编译器进行了优化,只调用——>构造函数 //case2: MyPoint qq; //构造函数 f1(qq); //拷贝构造函数tmp、析构tmp //case3:区分下面两种情形,对比分析 qq = f2(); //构造函数p、拷贝构造函数tmp、析构函数p、赋值=、析构函数tmp MyPoint pp = f2(); //构造函数p、拷贝构造函数tmp、析构函数p return 0; }
相关文章推荐
- object构造、拷贝构造、析构、临时对象
- C++拷贝构造、临时对象、虚拟继承、重载、覆盖、隐藏
- C++学习笔记之——局部对象和临时对象的构造和析构时机
- 深度探索C++对象模型之构造、解构、拷贝语意学小结
- C++:析构函数、对象生命周期、类型转换构造、拷贝构造、拷贝赋值、深浅拷贝
- 【C++对象模型】第五章 构造、解构、拷贝 语意学
- 临时对象的构造与析构
- 写一个类,实现复杂对象的拷贝构造
- 类的构造,析构,临时对象与函数参数的关系
- 普通构造、拷贝构造、对象赋值操作运算符重载的代码实例
- 根据指定方法的参数去构造一个新的对象的拷贝并将他返回
- 关于对象赋值及返回临时对象过程中的构造与析构
- c++ 抽象概念,内存格局,浅拷贝,深拷贝,临时对象,无名对象
- C++对象模型 ch5 构造 析构 拷贝语义学
- 对象的构造、析构、拷贝构造
- 深度探索C++对象模型 第五章 构造、析构、拷贝语意学
- C++对象模型 第五章 构造、析构、拷贝语意学
- 深入探索C++对象模型之五 --- 析构、构造、拷贝语意学
- C++ 对象构造, 拷贝, 赋值和隐式类型转换总结
- 深度探索C++对象模型:5.构造、析构、拷贝语意学