当我写的接口类在C++中,我选择以下任一2个选项做什么用的接口的析构函数
class Interface
{
public:
virtual R1 f1(p11, p12 , ...) = 0;
...
virtual Rn fn(pn1, pn2 , ...) = 0;
virtual ~Interface() {}
}
或
class Interface
{
public:
virtual R1 f1(p11, p12 , ...) = 0;
...
virtual Rn fn(pn1, pn2 , ...) = 0;
virtual ~Interface() = 0;
}
Interface::~Interface() {}
第一个版本是短写
第二种是有吸引力在于该接口的所有功能是纯虚
是否有任何理由我应该更喜欢一种或另一种方法(或者可能是第三种方法)?
谢谢
错误。第二种情况不会强制析构函数被覆盖:http://ideone.com/aw3kV。此外,这句话“所以基类被迫实现析构函数”*对我来说没有意义。你能改述一下吗? – Nawaz 2011-03-19 11:16:44
@Nawaz - 对不起,错字。我的意思是“派生”,而不是“基础”。它现在已经修复。必须在凌晨5点停止编写代码。 – 2011-03-20 18:24:35