如果沒有賦初值,全域性儲存區的成員變數初始值系統預設為0,棧空間和堆空間上成員變數初始值系統預設為隨機數。
從程式設計的角度,物件只是變數,
c++中可以定義與類名相同的特殊成員函式-建構函式。
建構函式沒有任何返回型別的宣告。
建構函式在物件定義時自動呼叫。
每個物件在使用之前都應該初始化,建構函式用於物件初始化。
建構函式可以根據需要定義引數,物件定義和物件宣告不同:
物件定義:申請物件的空間並呼叫建構函式。
物件宣告:告訴編譯器存在這樣乙個物件。
test t1(1); //呼叫 test(int v)
test t2=1; //一樣 呼叫 test (int v)
int i=1; //初始化
int i(100); //初始化
i=1; //賦值
手工呼叫建構函式:
test ta[3]=;
test t=test(100); // 手工呼叫初始化方式
小例項:開發乙個陣列類解決原生陣列的安全性問題
提供函式獲取陣列長度
提供函式獲取陣列元素
提供函式設定陣列元素
#ifndef _intarray_h_
#define _intarray_h_
class intarray
;#endif
#include "intarray.h"
intarray::intarray(int len)
}int intarray::length()
bool intarray::get(int index, int& value)
return ret;
}bool intarray::set(int index,int value)
return ret;
}void intarray::free()
for(int i=0;i
}a.free();
system("pause");
return 0;
17 物件的構造(中)
1 建構函式 建構函式和普通函式的區別 普通函式的函式名可以隨機定義,而建構函式的函式名和類名一致 普通函式有返回值,而建構函式沒有返回值 普通函式可以定義引數,那麼建構函式可以定義引數嗎?class test test t 定義物件並呼叫建構函式 int main 我們的整個編譯過程分為好幾步 1...
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...