0

假设我有一段这样的代码:

// Foo.h:
class Incomplete; // the forward-declaration
class Foo {
  void bar(Incomplete&); // doesn't really matter
};
// Foo.cpp:
class Incomplete : private Baz {
};
void Foo::bar(Incomplete&) {
}

前向声明类Foo.h是否符合标准?如果是,从哪个语言版本开始?protected继承又如何呢?

4

1 回答 1

5

需要一个类的前向声明来省略继承。你不能写

class Incomplete : private Baz;

即使你想。

前向声明的目的是简单地表明特定名称空间中的特定名称引用一个类。指定基类是定义的一部分,因为它提供了有关类在内存中的布局的信息。

于 2020-02-28T21:14:21.257 回答