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();
会有所不同
谢谢 展开
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();
会有所不同
谢谢 展开
3个回答
展开全部
默认的是不带参数的构造函数。
但是你只要写了构造函数,就不默认得有构造函数了。
这是从C++中的话。
所以你的构造函数也是没有带参数的,所以你不能这样默认(A a2());
一定要带参数才能这样(如A a2(5)),总之得有参数才能这样。
所以一般的构造函数都是重载过的,也就是说有几个构造函数。
自己去体会吧!
但是你只要写了构造函数,就不默认得有构造函数了。
这是从C++中的话。
所以你的构造函数也是没有带参数的,所以你不能这样默认(A a2());
一定要带参数才能这样(如A a2(5)),总之得有参数才能这样。
所以一般的构造函数都是重载过的,也就是说有几个构造函数。
自己去体会吧!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
楼主要看清a1和a2具体是做什么的
构造函数只有在产生对象或者是初始化的时候才会被调用
默认的也是如此
这里的a2:
其生命形式为 A a2();
显然为一过程函数 返回类型
但这个函数 仅仅是一个声明而已
并未执行 所以没有A类对象的生成以及初始化信息
不会调用构造函数
如果在a2()中返回了一个A的对象,他调用构造函数的方法
和a一样,因为这里有显示的构造函数,不需调用默认构造函数。
楼主可以改一下a2()的实现
使其返回一个对象
然后再在Main()中调用a2()看看
构造函数只有在产生对象或者是初始化的时候才会被调用
默认的也是如此
这里的a2:
其生命形式为 A a2();
显然为一过程函数 返回类型
但这个函数 仅仅是一个声明而已
并未执行 所以没有A类对象的生成以及初始化信息
不会调用构造函数
如果在a2()中返回了一个A的对象,他调用构造函数的方法
和a一样,因为这里有显示的构造函数,不需调用默认构造函数。
楼主可以改一下a2()的实现
使其返回一个对象
然后再在Main()中调用a2()看看
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
A a2();
这是一个函数声明啊
名称为 a2,返回值类型为 A 的函数
只是声明,没有执行,所以不会输出
这是一个函数声明啊
名称为 a2,返回值类型为 A 的函数
只是声明,没有执行,所以不会输出
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询