C++之构造函数和析构函数强化
生活随笔
收集整理的這篇文章主要介紹了
C++之构造函数和析构函数强化
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
構造與析構調用順序:
#include <stdio.h>class Test9_1 { public:Test9_1 (int a){m_a = a;printf ("9_1 1111111111111111111構造函數....a: %d\n", a);}// 析構的順序和構造的順序相反,先構造的后析構~Test9_1(){printf ("9_1 1111111111111111111析構函數....a: %d\n", m_a);} private:int m_a; };// 對象初始化列表,解決一個類中有另一個沒有無參構造的類的對象的初始化 class Test9_2 { public:// 對象初始化列表,在構造函數后面加:,后面加上要初始化的對象// 對象初始化列表要比當前類的構造函數先執行// 對象的初始化先后順序和 在對象初始化列表 的順序無關,和在類中的聲明先后順序有關 Test9_2():m_a(10), m_c(30), m_b(20), m_ca(100){printf ("9_2 222222222222構造函數....\n");}~Test9_2(){printf ("9_2 222222222222構造函數....a: %d\n", m_ca);} private:Test9_1 m_b;Test9_1 m_c;Test9_1 m_a;const int m_ca; };int main9_1() {// 類中有了構造函數以后,就沒有默認的無參構造// Test9_1 a;Test9_2 a;return 0; }以及構造中調用構造:
#include <stdio.h>class Test10_1 { public:// 構造函數中調用構造函數 不會達到預期的效果的Test10_1(int a, int b){m_a = a;m_b = b;Test10_1(a, b, 30); // 匿名對象、臨時對象}Test10_1 (int a, int b, int c){m_a = a;m_b = b;m_c = c;}~Test10_1(){printf ("析構*******a = %d, b = %d, c = %d\n", m_a, m_b, m_c);}void print (){printf ("a = %d, b = %d, c = %d\n", m_a, m_b, m_c);} private:int m_a;int m_b;int m_c; };int main10_1() {// Test10_1(10,20); // 臨時對象 生命周期就是這一行Test10_1 a(10,20);a.print();printf ("--------------------------------\n");return 0; }總結
以上是生活随笔為你收集整理的C++之构造函数和析构函数强化的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 宝塔挂载linux硬盘,宝塔移动硬盘挂载
- 下一篇: linux脚本编程有参函数,shell脚