jlc*_*lin 3 c++ inheritance c++11
我有一个基类,我想阻止大多数类的继承,但允许它为我可以硬编码的一些类.这可能在C++中?使用C++ 11更容易吗?
我想也许我会使用这个final参数,但这会阻止任何继承.
// This can be derived by anyone
class Base{
...
}
// This should only be derived by those I say can derive it
class Base2: public Base{
protected:
int SpecialVar;
}
Run Code Online (Sandbox Code Playgroud)
我想要这个的原因是有些类需要访问,SpecialVar而对其他类没有意义.所有类的功能仍然有意义Base.
class X
{
private:
X() {}
friend class D;
};
class D: public X
{
};
class Y: public X // will fail, because it can't access X::X()
{
};
Run Code Online (Sandbox Code Playgroud)
小智 5
而不是让你的派生类成为朋友,另一种方式(根据你正在处理的具体类,可能有或没有意义),就是嵌套它们.
class Base {
Base() { }
public:
class Derived;
};
class Base::Derived : Base {
};
class CannotDerive : Base {
};
int main() {
Base::Derived x; // ok
CannotDerive y; // error
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
360 次 |
| 最近记录: |