其他分享
首页 > 其他分享> > c – 某些设计模式代码中的奇怪语法:解释?

c – 某些设计模式代码中的奇怪语法:解释?

作者:互联网

好的,我今天遇到了这个问题,那时TI TMS470 C编译器拒绝接受它.

这来自“Head First Design Patterns”示例代码的C版本的Silver版本.

class foo {
   ...
protected:
   virtual ~foo() = 0 {};  // compiler barfs on this line
};

编译器拒绝接受“= 0”(纯虚拟)和“{}”的组合(我猜这是为了让派生类无论如何都要抛出析构函数.

究竟他们试图用这条线做什么,它真的是合法的C,它有多重要?

解决方法:

这不合法C.纯虚函数可以有一个主体,但定义必须是在课外进行的.

在这种特殊情况下(函数是析构函数),如果在程序中的任何地方使用类,函数必须有一个主体(即,如果它在某处被用作基类,因为这是可以使用抽象的唯一方法类).

确定整个事情的正确方法如下

class foo {
   ...
protected:
   virtual ~foo() = 0;
};

inline foo::~foo()
{
}

标签:c,abstract,observer-pattern
来源: https://codeday.me/bug/20190726/1543543.html