1、建構式含義:成員函式名與包含它的類的類名一致,此成員函式稱建構式
class Test { public: Test() //無引數 建構式 { } ~Test() //解構式 { cout<<"我是解構式,被呼叫了" <<endl; } protected: private: int a ; };建構式與解構式的形式
class Test4 { public: Test4() //無引數建構式 { m_a = 0; m_b = 0; } Test4(int a) { m_a = a; m_b = 0; } Test4(int a, int b) //有引數建構式 //3種方法 { m_a = a; m_b = b; } //賦值建構式 (copy建構式) // Test4(const Test4& obj ) { m_b = obj.m_b + 100; m_a = obj.m_a + 100; } public: void printT() { cout<<"普通成員函式"<<endl; cout<<"m_a"<<m_a<<" m_b"<<m_b<<endl; } private: int m_a; int m_b; }; //1 賦值建構式 用1個物件去初始化另外一個物件 void main() { Test4 t3;//什么都不寫默認呼叫無參建構式 不能寫成 Test t3(); Test4 t1(1, 2); Test4 t0(8, 9);//呼叫兩個引數建構式 c++編譯器自動的呼叫建構式 //下面這兩個會呼叫含一個引數建構式 Test4 t7 = (3, 4, 5, 6, 7); // = c+對等號符 功能增強 c++編譯器自動的呼叫建構式 Test4 t8 = 5; //這兩個都會呼叫賦值建構式 Test4 t2 = t1; //用t1來初始化 t2 ,會呼叫賦值建構式,t1明顯就是obj,然后t2的成員變數就可以用t1的成員變數來控制,類似t2為數學上的的因變數,t1為自變數,t2=f(t1) Test2 t5 (t1);//呼叫匿名物件 //下面這兩個不會呼叫賦值建構式 Test4 t4 = Test4(1,4); // t4物件的初始化,如 引數建構式里面有與t4名稱相同的成員變數賦值操作,則后者(t4)與前者的相同變數值也會相等, t0 = t1; //用t1 給 t0賦值操作(是共同的成員變數賦值) ,和初始化是兩個不同的概念 t2.printT();//結果為 m_a=101 m_b=102 這是t2成員變數新的私有值 t4.printT();//結果為 m_a=1 m_b=4 這是t4成員變數新的私有值 t0.printT();//結果為 m_a=1 m_b=2 這是t0成員變數新的私有值 t5.printT();//結果為 m_a=101 m_b=102 這是t5成員變數新的私有值 t7.printT();//結果為 m_a=7 m_b=0 這是t7成員變數新的私有值 t8.printT();//結果為 m_a=5 m_b=0 這是t8成員變數新的私有值 return ; }
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/103681.html
標籤:C++
上一篇:型別轉換函式
下一篇:個人訓練計劃
