初始化類物件

2021-08-21 22:42:36 字數 1208 閱讀 2378

初始化類物件

趙湘寧問題:

c++中如何初始化類中的表資料?在c語言中,我能像下面這樣初始化結構陣列:

//

struct mystruct ;

mystruct table = ,

,... // etc

};//

但是如果mystruct是個c++類,而不是結構,我編譯就會出錯。我覺得這是c++的乙個不足。

解答:

這個問題完全取決於你如何看待c++。c++的乙個優點之一便是它強制你做正確的事情。例如,c++不喜歡建立物件時不呼叫建構函式。這只就是為什麼你不能用原始資料初始化類物件的原因,不管是部分陣列還是其它資料。建構函式的目的是保證每乙個物件都被正確初始化,不管你是從程式棧,可用記憶體堆分配空間,還是作為靜態陣列元素。讓原始資料旁路掉建構函式被忌諱的事情。也導致你不能用初始的資料來建立物件靜態陣列——你必須呼叫建構函式!

//

class cfooble

cfooble(int i)

};cfooble table = ;

//

下面的**是個可以編譯的完整例子。

//

// staticclassarray — 說明如何初始化在c++物件的靜態c陣列

// 編譯方法如下:

//// cl fooble.cpp

//#include //

// 乙個典型的類——有三個資料成員...

//class cfooble

cfooble(int xx, int yy, int zz) : x(xx),y(yy),z(zz)

// 乙個輸出函式

void print()

// 這個函式檢查是否為空...

int isempty()

};#ifdef never

// 如下這樣將不能執行—不能「生硬」地進行c++類物件的初始化!

cfooble table = ,,};

#endif

// 以下是如何初始化乙個類陣列:

cfooble table = ;

void main()

}//

在c++中,你能用用任何建構函式初始化陣列元素,並且c++甚至用預設的建構函式來初始化額外的元素,而不用外部的初始華例程。對我來說,這是一種進步,而不是不足。

類和物件 初始化

一般的訪問許可權修飾符 public protected private 預設,對class修飾一般用public 預設,乙個原始檔中只能有乙個public修飾的類,static 靜態的,static修飾的變數成為靜態變數,是共享的,和static修飾的同名的變數,無論哪乙個改變,其他的也會改變,一...

物件導向 類 類 例項初始化)

1 類的成員 public class testblock class myclass 結果為 這是非靜態 塊 無參構造 在每次建立物件時都執行 public class testblock class myclass public myclass string str 結果為 這是非靜態 塊 無參...

物件初始化

在oc中使用alloc後,會分配到一塊記憶體塊,同時這塊記憶體塊會被清零,所以初始化函式init是不需要再做置零的操作的。在oc中,應該在alloc後就呼叫初始化函式init,使用new可以達到這個效果,但new不是oc的風格。物件在init時,應該先使用其父類的init,然後再使用自己的init行...