具有一个默认参数的构造函数
假设我有一个类
class C {
C(int a=10);
};
,为什么如果我调用
C c;
构造函数 C(int =10)
就会被调用,如果我调用
C c();
默认构造函数就会被调用?如何避免这种情况?我只想执行我的构造函数,我尝试将默认构造函数设为私有,但它不起作用。
Suppose I have a class
class C {
C(int a=10);
};
why if I call
C c;
the contructor C(int =10)
is called and if I call
C c();
the default constructor is called? How to avoid this? I want to execute only my constructor, I tried to make the default constructor private, but it doesn't work.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
C c();
应该被解析为函数声明。为了显式调用默认构造函数,您需要编写C c = C();
。显式
,以防止隐式转换在意外时刻启动。C c();
should be parsed as a function declaration. In order to explicitly invoke the default-constructor, you need to writeC c = C();
.explicit
, to prevent implicit conversions from kicking in at unexpected moments.代码
C c();
并不像您想象的那样:它声明了一个名为
c
的函数,该函数不接受任何参数并返回一个C.它相当于
The code
C c();
doesn’t do what you think it does:It declares a function called
c
that takes no arguments and returns aC
. It is equivalent to这是因为
c()
被解释为名为c
的函数。C()
将触发C
类的适当构造函数This is because the
c()
is interpreted as a function namedc
.C()
will trigger the appropriate constructor for theC
class