我可以忽略非公共继承来进行类的前声明吗?

问题描述 投票:0回答:1

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

// 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继承又如何呢?

c++ inheritance standards forward-declaration private-inheritance
1个回答
0
投票

类的前向声明是必需以省略继承。你不能写

class Incomplete : private Baz;

即使您愿意。

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

© www.soinside.com 2019 - 2024. All rights reserved.