初始化類物件
趙湘寧問題:
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行...