csdn主頁:https://blog.csdn.net/qq_43605085
構造函數定義:是一種特殊的方法 。主要用來在創建對象時初始化對象, 即為對象成員變量賦初始值,總與new運算符一起使用在創建對象的語句中 。特別的一個類可以有多個構造函數 ,可根據其參數個數的不同或參數類型的不同來區分它們 即構造函數的重載。
一、構造函數的作用:初始化對象的數據成員
class Counter { public: Counter() { m_value = 0; } private: // 數據成員 int m_value; } eg: Counter c1;
Counter類的構造函數
特點:以類名作為函數名,無返回類型
編譯系統為對象c1的每個數據成員(m_value)分配內存空間,並調用構造函數Counter( )自動地初始化對象c1的m_value值設置為0
二、構造函數的種類
1、無參的構造函數(默認構造函數)
class Complex { private : double m_real; double m_imag; public: // 無參數構造函數 Complex(void) { m_real = 0.0; m_imag = 0.0; } }
如果創建一個類你沒有寫任何構造函數,則系統會自動生成默認的無參構造函數,函數為空,什么都不做。
只要你寫了一個下面的某一種構造函數,系統就不會再自動生成這樣一個默認的構造函數,如果希望有一個這樣的無參構造函數,則需要自己顯示地寫出來
2、一般構造函數(也稱重載構造函數)
class Complex { private : double m_real; double m_imag; public: //一般構造函數(也稱重載構造函數) Complex(double real, double imag) { m_real = real; m_imag = imag; }
一般構造函數可以有各種參數形式,一個類可以有多個一般構造函數,前提是參數的個數或者類型不同(基於c++的重載函數原理)
例如:你還可以寫一個 Complex( int num)的構造函數出來
創建對象時根據傳入的參數不同調用不同的構造函數
使用上面定義的類對象來說明各個構造函數的用法:
void main() { // 調用了無參構造函數,數據成員初值被賦為0.0 Complex c1,c2; // 調用一般構造函數,數據成員初值被賦為指定值 Complex c3(1.0,2.5); // 也可以使用下面的形式 Complex c3 = Complex(1.0,2.5); }