为什么我们将构造函数声明为public
?
答案 0 :(得分:2)
构造函数是创建对象的方式。如果你的构造函数不是公共的,那么它就不能用于从类外部构造一个新对象。
请注意,有时非公共构造函数很有用,例如:
class foo
{
public:
static foo make_foo(int i)
{
// only functions of foo can use that constructor,
// because it's private; return a foo
return foo(i);
}
private:
foo(int i) { /* construct */ }
};
现在foo
只能通过函数make_foo
创建,无论出于何种原因。
答案 1 :(得分:1)
在下面的代码行中,初始化应该通过构造函数进行。如果构造函数在这种情况下是private
,那么如何在类范围之外访问它。此外,在foo::foo(int num)
实例化时默认会调用obj
。
foo *obj = new foo(5);
答案 2 :(得分:1)
如果不这样做,您将无法从其他对象构造对象。