gpt4 book ai didi

c++ - 纯虚拟和内联定义

转载 作者:可可西里 更新时间:2023-11-01 17:57:18 25 4
gpt4 key购买 nike

考虑:

struct device{
virtual void switchon() = 0 {}
};

int main()
{

}

我写了类似下面的代码,但报错了:

pure-specifier on function-definition compilation terminated due to -Wfatal-errors.

当我问他时,他给我看了标准中的以下引述:

A virtual function declared in a class shall be defined, or declared pure (10.4) in that class, or both; but no diagnostic is required (3.2).

我似乎无法理解这意味着什么,我认为这在某种程度上是不相关的。

PS:如果不是相关引用,请指导我找到合适的引用,以便我更好地反驳。

最佳答案

一个纯虚函数可能有一个定义(在类定义之外)。那是完全可选的。但是你试图做的是完全错误的,因为

C++03 [部分 10.4/2] 说:

[Note: a function declaration cannot provide both a pure-specifier and a definition —end note] [Example:

struct C {
virtual void f() = 0 { }; // Ill-formed
}

随便你怎么写

struct device{
virtual void switchon() = 0;
};

void device::switchon() { } // Definition {optional}

int main()
{

}

关于c++ - 纯虚拟和内联定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3836181/

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