乙個空類什麼時候不是空類? ----
當c++編譯器通過它的時候。如果你沒有宣告下列函式,體貼的編譯器會宣告它自己的版本。這些函式是:乙個拷貝建構函式,乙個賦值運算子,乙個析構函式,一對取址運算子。另外,如果你沒有宣告任何建構函式,它也將為你宣告乙個預設建構函式。所有這些函式都是公有的。換句話說,如果你這麼寫:
class empty{};
和你這麼寫是一樣的:
class empty ;
現在,如果需要,這些函式就會被生成,但你會很容易就需要它們。下面的**將使得每個函式被生成:
const empty e1; //
預設建構函式
// 析構函式
empty e2(e1); // 拷貝建構函式
e2 = e1; // 賦值運算子
empty *pe2 = &e2; //
取址運算子
// (非const)
const empty *pe1 = &e1; //
取址運算子
// (const)
from:
弄清C 在幕後為你所寫 所呼叫的函式
乙個空類什麼時候不是空類?當c 編譯器通過它的時候。如果你沒有宣告下列函式,體貼的編譯器會宣告它自己的版本。這些函式是 乙個拷貝建構函式,乙個賦值運算子,乙個析構函式,一對取址運算子。另外,如果你沒有宣告任何建構函式,它也將為你宣告乙個預設建構函式。所有這些函式都是公有的。換句話說,如果你這麼寫 c...
條款45 弄清C 在幕後為你所寫 所呼叫的函式
如果你沒有宣告下列函式,體貼的編譯器會宣告它自己的版本。這些函式是 乙個拷貝建構函式,乙個賦值運算子,乙個析構函式,一對取址運算子。另外,如果你沒有宣告任何建構函式,它也將為你宣告乙個預設建構函式。所有這些函式都是公有的。換句話說,如果你這麼寫 class empty 和你這麼寫是一樣的 class...
弄清C 在幕後為你做的
乙個空類什麼時候不是空類?當c 編譯器通過它的時候。如果你沒有宣告下列函式,體貼的編譯器會宣告它自己的版本。這些函式是 乙個拷貝建構函式,乙個賦值運算子,乙個析構函式,一對取址運算子。另外,如果你沒有宣告任何建構函式,它也將為你宣告乙個預設建構函式。所有這些函式都是公有的。換句話說,如果你這麼寫 c...