c++ - 封装在头文件中

标签 c++ header-files

我有一个包含 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/

相关文章:

c++ - 在 opengl 中渲染 obj 文件时出现黑色窗口

c++ - Armadillo C++ 和 BLAS 和 ATLAS 在 mingw32 下找不到 lapack blas

c++ - 如何将全局变量传递给 C++ 中的函数?

c++ - 如何在 Visual Studio/C++/.NET 中快速找到给定声明所需的头文件?

c++ - 我正在尝试使用类创建具有已指定的最大大小的数组,但似乎未创建该数组

C++ 头文件约定

c++ - 如何在 fedora/linux gcc++ 上链接 OpenGL/glew/glfw

c++ - 用VC++函数构建DLL无法访问

c++ - 错误LNK2019,如何解决? *更新*

c++ - 了解头文件