作者godman362 (Shizuru)
看板C_and_CPP
标题[问题] virtual & pure virtual
时间Sat Mar 21 13:36:58 2009
想问下列两者(一、二)之间的差异:
一、
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
1F:推 goosey:应该是的,abstract class本身不允许单独实体化 03/21 13:46
2F:→ goosey:所以implement pure virtual function是没有意义 03/21 13:47
3F:→ goosey:更正 在pure virtual function implement没有意义 03/21 13:48
4F:→ goosey:更正 在abstract class 实作 pure vir function没意义 ><"" 03/21 13:48
5F:→ godman362:所谓没有意义,是代表定义了也等於没有定义吗? 03/21 14:23
6F:→ godman362:还是说可以定义,只是用到的机会不多? 03/21 14:23