17 物件的構造(中)

2021-09-26 05:47:24 字數 1931 閱讀 5206

1、建構函式

建構函式和普通函式的區別:普通函式的函式名可以隨機定義,而建構函式的函式名和類名一致;普通函式有返回值,而建構函式沒有返回值;普通函式可以定義引數,那麼建構函式可以定義引數嗎?

class test

};

test t;		//定義物件並呼叫建構函式

int main()

我們的整個編譯過程分為好幾步:

1、預處理

2、編譯器出場,對我們的源**進行語法檢查並生成目標檔案

3、鏈結器出場,鏈結器就會去找我們目標檔案裡面存在的一些名字,比如它會發現上面的程式有乙個沒有解決的名字 t ,鏈結器就會去各個目標檔案尋找 t 究竟是在**定義的。

物件的初始化自動會呼叫建構函式,而給物件賦值不會呼叫建構函式。我們初始化的寫法一般有兩種

int i = 100;

int i(100);

引申到物件的初始化,下面這三種初始化方式,都是物件的初始化。

; //物件陣列的初始化,手工呼叫建構函式

for (int i = 0; i < 3; i++)

test t1 = test(100); //新的初始化方式

手工呼叫建構函式可以讓我們的物件陣列裡面每個成員的初始化都是我們想要的值。

2、小例項

intarray.h:

#ifndef _intarray_h_

#define _intarray_h_

#pragma once

class intarray

;#endif

intarray.cpp

#include "intarray.h"

intarray::intarray(int len)

m_length = len;

}int intarray::length()

bool intarray::set(int index, int value)

return ret;

}bool intarray::get(int index, int& value)

return ret;

}void intarray::free()

main.cpp

#include #include "intarray.h"

int main()

for (int i = 0; i < a.length(); i++) }

a.free();

return 0;

}

小結:

17 物件的構造

如果沒有賦初值,全域性儲存區的成員變數初始值系統預設為0,棧空間和堆空間上成員變數初始值系統預設為隨機數。從程式設計的角度,物件只是變數,c 中可以定義與類名相同的特殊成員函式 建構函式。建構函式沒有任何返回型別的宣告。建構函式在物件定義時自動呼叫。每個物件在使用之前都應該初始化,建構函式用於物件初...

17 物件的構造(上)

注 部落格中內容主要來自 狄泰軟體學院 部落格僅當私人筆記使用。測試環境 ubuntu 10.10 gcc版本 4.4.5 一 問題 物件中成員變數和初始值是多少?二 小實驗 1 下面的類定義中成員變數i和j的初始值是什麼?class test int getj 程式設計實驗 成員變數的初始化 17...

11 物件的構造

目錄從程式設計的角度,物件只是變數,因此 問題 程式中如何對乙個物件進行初始化,使得不管在什麼地方建立類物件,其成員變數的初始值都為固定值?解決方案1 存在的問題 解決方案2 建構函式 示例 建構函式 注意 物件定義和物件宣告不同 建構函式的自動呼叫 class test test int v in...