第八天2017/04/17(1、拷贝构造、❤临时对象)
生活随笔
收集整理的這篇文章主要介紹了
第八天2017/04/17(1、拷贝构造、❤临时对象)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
調用拷貝構造函數的三種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、賦值=、析構函數tmpMyPoint pp = f2(); //構造函數p、拷貝構造函數tmp、析構函數preturn 0; }總結
以上是生活随笔為你收集整理的第八天2017/04/17(1、拷贝构造、❤临时对象)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 第七天2017/04/14(引用与con
- 下一篇: 第八天2017/04/17(2、❤Str