问答题 如何设置类的构造函数的可见性
【正确答案】
【答案解析】如果不想让外界用户直接构造一个类(假设这个类的名字为A)的对象,而希望用户只能构造这个类A的子类,那就可以将类A的构造函数/析构函数声明为protected,而将类A的子类的构造函数/析构函数声明为public。
如果将构造函数/析构函数声明为private,那只有这个类的“内部”的函数才能构造这个类的对象了。这里所说的“内部”是指类的成员函数。
因为在外部不能定义对象,所以不能通过对象调用成员函数,如果想要调用成员函数,可以将成员函数定义为静态,然后通过类的::操作符调用,例如,通过如下方式即可:
A& ra=A::Instance();
ra.Print();