我有一个有两个类的头文件。A类(这是一个很大的类)和B类,它们继承了A类,我不希望人们被允许创建A类的对象,甚至不能看到它的静态成员。他们只应该和B班一起工作什么是最好的方法。
(一般来说,A是一个“帮助者类”)
发布于 2016-08-31 07:59:54
若要限制类的创建,请将类A的构造函数设为私有,并将类B声明为朋友类。这样只有B才能实例化A。
class B;
class A
{
private:
A();
friend class B;
};这同样适用于方法(静态的或非静态的):使它们都是私有的,朋友语句将允许B访问A的成员。
编辑:也与保护一起工作。
发布于 2016-08-31 08:08:36
我不想让人们创建A类的对象
您要寻找的是所谓的“抽象基类”。在C++中,任何至少有一个抽象成员的类都自动是一个抽象类,没有其他语言中的额外关键字。
class A
{
public:
virtual void Test() = 0; // abstract, has no implementation
};
class B : public A
{
public:
virtual void Test() {} // not abstract, has an implementation
};
int main()
{
A a; // this will produce a compiler error.
B b; // this is fine
return 0;
}甚至能够看到它的静态成员
别把他们公之于众。要么将它们设置为protected或private,然后将friend访问权限授予B类。
https://stackoverflow.com/questions/39243587
复制相似问题