由面试的一道题产生的疑惑,有经验的来看看

zhuhuaitao226 2010-08-01 10:08:09
class A
{
A(){};

};

int main()
{
A a; // A a();
return 0;
}

加括号和不加究竟有什么区别, 一个能编译通过,而另一个编译出错.
...全文
104 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
失落的凡凡 2010-08-01
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 xhp7185 的回复:]
加了括号如果里面不带参数就相当函数声明了,
[/Quote]

哦……
pengzhixi 2010-08-01
  • 打赏
  • 举报
回复
规定而已。显示调用默认构造函数不需要加括号
失落的凡凡 2010-08-01
  • 打赏
  • 举报
回复
我试了一下 果然G++和VC2005都是这样…… 想不明白…… 期待解释……
zhuhuaitao226 2010-08-01
  • 打赏
  • 举报
回复
加注释的那个编译的了,你自己试试,是个函数声明
allabcdall 2010-08-01
  • 打赏
  • 举报
回复
A a; // A a();象这写法好象也有问题
zhuhuaitao226 2010-08-01
  • 打赏
  • 举报
回复
3楼是对的,我误解了.谢谢
失落的凡凡 2010-08-01
  • 打赏
  • 举报
回复
两个应该都编不过去才对啊,楼主是什么编译器?
zhuhuaitao226 2010-08-01
  • 打赏
  • 举报
回复
我是想说, 加和不加应该是调用的不同的构造函数,分别是什么. 私有是我故意的
xhp7185 2010-08-01
  • 打赏
  • 举报
回复
加了括号如果里面不带参数就相当函数声明了,
elegant87 2010-08-01
  • 打赏
  • 举报
回复
不加括号调用的是默认的构造函数。
加括号必须在括号中写参数,这时候调用自己写的构造函数
这个构造函数必须显示的写出来


class A
{
A(){};
A(int i){cout<<i<<endl;}

};

int main()
{
A a; //
A b(12);
return 0;
}
半刻沙漏 2010-08-01
  • 打赏
  • 举报
回复
你把构造函数设为私有的了 写成公有的话两个就都行了

64,282

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧