假设我有一个班级
class C {
C(int a=10);
};
为什么我打电话
C c;
调用构造函数C(int =10)
,如果我调用
C c();
调用默认构造函数?怎么避免这个?我想只执行我的构造函数,我试图将默认构造函数设为私有,但它不起作用。
答案 0 :(得分:17)
C c();
应该被解析为 函数声明 。为了显式调用default-constructor,您需要编写C c = C();
。explicit
,以防止在意外时刻进行隐式转换。 答案 1 :(得分:14)
代码C c();
没有按照您的想法执行:
它声明了一个名为c
的函数,该函数不带参数并返回C
。它相当于
C c(void);
答案 2 :(得分:1)
这是因为c()
被解释为名为c
的函数。 C()
将触发C
类