gpt4 book ai didi

c++ - 一些设计模式代码中的奇怪语法 : explanation?

转载 作者:太空狗 更新时间:2023-10-29 20:06:56 26 4
gpt4 key购买 nike

好的,我今天遇到了这个,当时 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++ - 一些设计模式代码中的奇怪语法 : explanation?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5494003/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com