[問題] virtual & pure virtual
想問下列兩者(一、二)之間的差異:
一、
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
03/21 13:46, 1F
→
03/21 13:47, , 2F
03/21 13:47, 2F
→
03/21 13:48, , 3F
03/21 13:48, 3F
→
03/21 13:48, , 4F
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
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 2 篇):