看板 C_and_CPP 關於我們 聯絡資訊
想問下列兩者(一、二)之間的差異: 一、 class Base { private : int i; public : Base() : i(0) {} virtual void show() = 0; }; void Base::show() { cout <<" Show Func" <<endl; } class Derived : public Base { }; 二、 class Base { private : int i; public : Base() : i(0) {} virtual void show() { cout <<" Show Func" <<endl; }; }; class Derived : public Base { }; 在第一個範例中,我將show寫成了pure virtual 但是我卻又再外面定義了show,所以我對第一個範例的認知會變成第二個範例 可是事實上卻不是如此 第一個範例不可以通過編譯,但是第二個可以 第二個很明顯可以,因為virtual有被Base類別定義,且不是pure virtual 不過難道被宣告成pure virtual之後,在外面所作的定義都不相等於第二個範例嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.118.54.55
goosey:應該是的,abstract class本身不允許單獨實體化 03/21 13:46
goosey:所以implement pure virtual function是沒有意義 03/21 13:47
goosey:更正 在pure virtual function implement沒有意義 03/21 13:48
goosey:更正 在abstract class 實作 pure vir function沒意義 ><"" 03/21 13:48
godman362:所謂沒有意義,是代表定義了也等於沒有定義嗎? 03/21 14:23
godman362:還是說可以定義,只是用到的機會不多? 03/21 14:23