您好,登錄后才能下訂單哦!
前言
創建一個對象時,常常需要做某些初始化的工作,例如對數據成員賦值,注意,類的數據成員是不能在聲明類時初始化的
為了解決這個問題,C++編譯器提供了 構造函數 來處理對象的初始化。構造函數是一種特殊的成員函數,與其他成員函數不同,不需要用戶來調用它,而是在建立對象時自動執行。
2、構造函數的分類(三個)
(1)無參構造函數
Test() { ; }
(2)帶參數構造函數
Test(int a,int b) { ; }
(3)賦值構造函數
Test(const Test &obj) { ; }
構造函數的調用
#include <iostream> using namespace std; class Test { public: Test() //無參構造函數 { m_a = 0; m_b = 0; cout << "無參構造函數" << endl; } Test(int a) //一個參數的有參構造函數 { m_a = a; m_b = b; } Test(int a,int b) //有參構造函數 //調用有參構造函數有三種方法 { m_a = a; m_b = b; cout << "有參構造函數" << endl; } Test(const Test& obj) //賦值構造函數(copy構造函數) { cout << "我也是構造函數" << endl; } public: void print() { cout << "普通成員函數" << endl; } protected: private: int m_a; int m_b; } void main() { Test t1; //無參構造函數的調用 (對象后什么都不寫) //有參函數的第一種調用方法 括號法 Test t1(1,2); //調用兩個參數的構造函數 t1.ptint(); //有參函數的第二種調用方法 =號法 (=操作不再是C語言中的功能。C++對= 進行了功能性增強) Test t2 = (3,4); //調用一個參數的構造函數 因為()號里是逗號表達式,結果為 4;即最后一個數 t2.print(); Test t3 = 4; t2.print(); //跟 Test t2 = (3,4) 效果是一樣的 //有參函數的第三種調用方法 手動的調用構造函數 Test t4 = Test(1,2); //調用了有兩個參數的構造函數 //直接調用構造函數,會產生匿名對象(涉及到匿名對象的去和留) cout << "hello" << endl; }
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。