[問題] virtual & pure virtual

看板C_and_CPP作者 (Shizuru)時間16年前 (2009/03/21 05:37), 編輯推噓1(105)
留言6則, 2人參與, 最新討論串1/2 (看更多)
想問下列兩者(一、二)之間的差異: 一、 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

03/21 13:46, , 1F
應該是的,abstract class本身不允許單獨實體化
03/21 13:46, 1F

03/21 13:47, , 2F
所以implement pure virtual function是沒有意義
03/21 13:47, 2F

03/21 13:48, , 3F
更正 在pure virtual function implement沒有意義
03/21 13:48, 3F

03/21 13:48, , 4F
更正 在abstract class 實作 pure vir function沒意義 ><""
03/21 13:48, 4F

03/21 14:23, , 5F
所謂沒有意義,是代表定義了也等於沒有定義嗎?
03/21 14:23, 5F

03/21 14:23, , 6F
還是說可以定義,只是用到的機會不多?
03/21 14:23, 6F
文章代碼(AID): #19n7pz7X (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #19n7pz7X (C_and_CPP)