我有一个包含 2 个类的头文件。 A 类(这是一个非常大的类)和继承 A 类的 B 类。我不希望人们被允许创建 A 类的对象,甚至不能看到它的静态成员。他们应该只与 B 类一起工作。这样做的最佳方式是什么。
(一般来说A是一个“辅助类”)
最佳答案
要限制类的创建,将类 A 的构造函数设为私有(private)并将类 B 声明为友元类。这样只有B可以实例化A。
class B;
class A
{
private:
A();
friend class B;
};
这同样适用于方法(静态的或非静态的):将它们全部设为私有(private)并且 friend 语句将允许 B 访问 A 的成员。
编辑:也适用于 protected 。
关于c++ - 封装在头文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39243587/