假设我有一个类:
class C {
C(int a=10);
};
为什么我调用时
C c;
构造函数C(int =10)
被调用,如果我调用
C c();
默认构造函数被调用了?如何避免这种情况?我只想执行我的构造函数,我尝试将默认构造函数设为私有,但它并没有起作用。
class C {
C(int a=10);
};
为什么我调用时
C c;
构造函数C(int =10)
被调用,如果我调用
C c();
默认构造函数被调用了?如何避免这种情况?我只想执行我的构造函数,我尝试将默认构造函数设为私有,但它并没有起作用。
C c();
应该解析为一个函数声明。如果想要显式调用默认构造函数,你需要写成 C c = C();
。explicit
,以避免在意想不到的时刻发生隐式转换。代码 C c();
并不是你想的那样:
它声明了一个名为c的函数,该函数不带参数并返回一个 C
类型。它等同于:
C c(void);
c()
被解释为名为c
的函数。C()
将触发C
类的适当构造函数。