我可以省略非 public 继承以进行 类 的前向声明吗?
Can I omit non-public inheritance for forward-declaration of classes?
假设我有一段这样的代码:
// 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
继承也一样吗?
class 的前向声明需要 以省略继承。你不能写
class Incomplete : private Baz;
即使你愿意。
前向声明的目的是简单地指示特定名称空间中的特定名称引用 class。指定基础 class 是定义的一部分,因为它提供了有关 class 在内存中的布局的信息。
假设我有一段这样的代码:
// 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
继承也一样吗?
class 的前向声明需要 以省略继承。你不能写
class Incomplete : private Baz;
即使你愿意。
前向声明的目的是简单地指示特定名称空间中的特定名称引用 class。指定基础 class 是定义的一部分,因为它提供了有关 class 在内存中的布局的信息。