有以下代码,哪位大神能否解释一下语句1、2、3、4??

structTest{Test(int){}Test(){}voidfun(){}};intmain(){Testa(1);//语句1a.fun();//语句2Testb... struct Test
{
Test(int){}
Test(){}
void fun(){}
};
int main()
{
Test a(1); //语句1
a.fun(); //语句2
Test b; //语句3
b.fun(); //语句4
return 0;
}
展开
 我来答
GiraKoo
2014-07-17 · 还没有任何签名哦
GiraKoo
采纳数:3949 获赞数:11110

向TA提问 私信TA
展开全部
语句1,Test类的构造过程中,提供了参数1,这是一个整型数据。所以会调用Test(int){}方法进行a对象的构造。
语句3,Test类的构造过程中,没有提供任何参数。所以会调用Test(){}方法进行b对象的构造.
语句2和语句4都调用了fun()函数,他们之间的区别在于,语句2调用的对象是a,语句4调用的对象是b。

从你问的问题来看,应该是刚刚接触C++编程的新手。
上面的问题主要涉及 构造函数, 函数重载的相关知识。

下面是摘自百度百科的说明:
构造函数 ,是一种特殊的方法 。主要用来在创建对象时初始化对象, 即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中 。特别的一个类可以有多个构造函数 ,可根据其参数个数的不同或参数类型的不同来区分它们 即构造函数的重载。

重载函数是函数的一种特殊情况,为方便使用,C++允许在同一范围中声明几个功能类似的同名函数,但是这些同名函数的形式参数(指参数的个数、类型或者顺序)必须不同,也就是说用同一个运算符完成不同的运算功能。这就是重载函数。重载函数常用来实现功能类似而所处理的数据类型不同的问题。

希望我的答案能够帮助到你,请采纳我的答案。
hactrox
推荐于2016-06-21 · TA获得超过591个赞
知道小有建树答主
回答量:263
采纳率:66%
帮助的人:213万
展开全部
#include<stdio.h>

struct Test
{
   Test(int){}    // 这是Test的带参数的构造函数,用于"制造"一个Test变量的时候
   Test(){}        // 这是Test的默认构造函数,也是用于定义的时候,不过什么事都没做
   void fun(){}    // 这是用户自定义的函数
};

int main()
{
   Test a(1);   // 定义一个Test结构体变量,其中调用了带参数的构造函数
   a.fun();     // 调用了自定义的fun()函数
   Test b;      // 定义了一个Test结构体变量b,其中调用了默认的构造函数
   b.fun();     // 调用了自定义的fun()函数
   getchar();
   return 0;
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式