C++的默认构造函数

#include<cstdio>structA{A(){printf("A\n");}};intmain(){printf("a1:");Aa1;printf("a2:"... #include <cstdio>

struct A {
A() { printf("A\n"); }
};

int main()
{
printf("a1:");
A a1;
printf("a2:");
A a2();
return 0;
}

输出结果是:
a1:A
a2:

请问
A a2();
调用的是什么构造函数,为什么
A a1;与A a2();
会有所不同

谢谢
展开
 我来答
吴小王
2010-05-21 · TA获得超过200个赞
知道小有建树答主
回答量:142
采纳率:0%
帮助的人:135万
展开全部
默认的是不带参数的构造函数。

但是你只要写了构造函数,就不默认得有构造函数了。

这是从C++中的话。

所以你的构造函数也是没有带参数的,所以你不能这样默认(A a2());
一定要带参数才能这样(如A a2(5)),总之得有参数才能这样。

所以一般的构造函数都是重载过的,也就是说有几个构造函数。

自己去体会吧!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
二月庐
2010-05-21 · TA获得超过157个赞
知道小有建树答主
回答量:372
采纳率:0%
帮助的人:225万
展开全部
楼主要看清a1和a2具体是做什么的
构造函数只有在产生对象或者是初始化的时候才会被调用
默认的也是如此
这里的a2:
其生命形式为 A a2();
显然为一过程函数 返回类型
但这个函数 仅仅是一个声明而已
并未执行 所以没有A类对象的生成以及初始化信息
不会调用构造函数
如果在a2()中返回了一个A的对象,他调用构造函数的方法
和a一样,因为这里有显示的构造函数,不需调用默认构造函数。
楼主可以改一下a2()的实现
使其返回一个对象
然后再在Main()中调用a2()看看
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
fox000002
2010-05-21 · TA获得超过3827个赞
知道大有可为答主
回答量:2356
采纳率:97%
帮助的人:1185万
展开全部
A a2();

这是一个函数声明啊

名称为 a2,返回值类型为 A 的函数

只是声明,没有执行,所以不会输出
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式