class person
person(string name, int age)
public
void
setage(int age)
public
intgetage()
void show()
}
在示例**中,person()即為person類的建構函式。當定義乙個類的時候,即使沒有顯式的寫出建構函式,程式也會預設載入建構函式。
建構函式的作用就是初始化物件。當上述**中沒有建構函式的時候,建立物件並列印,只會顯示變數在建立時的初始化值:「null 0」。
而當我們想在建立物件時,就讓物件具備一定的值,這時就要用到建構函式。注意,如果person()中為空,就是所謂的預設建構函式。
上面**執行的結果就是在控制台列印:「baby 0」。
由此可以看出建構函式的特點:函式名與類名相同;不需要定義返回值型別;沒有具體的返回值。
建構函式與普通函式的區別在於:建構函式隨著物件的建立而執行,對物件進行初始化。並且每個物件只能呼叫建構函式一次;
而普通函式只有在物件呼叫它時,才會被執行。並且每個物件可以呼叫普通函式多次。
當建立乙個物件時就希望它已經被賦值,這時就可以過載建構函式。
person p = new person("張三",20);
此時呼叫的建構函式就是:person(string name, int age)。
這就意味著,新建物件時可以根據傳入的引數不同而呼叫不同的建構函式。
在上述**中,age是用private修飾的。那麼則意味著age是不能直接被person類之外的變數所訪問的。所以要在類中另外定義函式介面,以呼叫age變數。
public void setage(int age)
在函式體中「this.age = age;」第乙個「this.age」指的是用person類建立的物件呼叫的age;第二個「age」指的是引數傳入的age。
通俗的說,哪個物件呼叫了this所在的函式,this就代表哪個物件。
person p = new person("張三",20);此時,this就代表的是p。
函式與建構函式
建立乙個物件的方式中有乙個建構函式模式。ecmascript中的建構函式是用於建立特定型別物件的。如object和array這樣的原生建構函式,執行時可以直接在執行環境中使用。還可以自定義建構函式,以函式的形式為自己的物件型別定義屬性和方法 如乙個建構函式 function student name...
拷貝建構函式與賦值建構函式
include stdafx.h include include using namespace std class a a a a 過載拷貝函式 a int id,char t name a char name a operator a a 注意 此處一定要返回物件的引用,否則返回後其值立即消失!...
拷貝建構函式與賦值建構函式
什麼時候用拷貝建構函式,和賦值建構函式 一 當用乙個已初始化過了的自定義類型別物件去初始化另乙個新構造的物件的時候,拷貝建構函式就會被自動呼叫。也就是說,當類的物件需要拷貝時,拷貝建構函式將會被呼叫。以下情況都會呼叫拷貝建構函式 乙個物件以值傳遞的方式傳入函式體 乙個物件以值傳遞的方式從函式返回 乙...