有以下代码,哪位大神能否解释一下语句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;
} 展开
{
Test(int){}
Test(){}
void fun(){}
};
int main()
{
Test a(1); //语句1
a.fun(); //语句2
Test b; //语句3
b.fun(); //语句4
return 0;
} 展开
2个回答
展开全部
语句1,Test类的构造过程中,提供了参数1,这是一个整型数据。所以会调用Test(int){}方法进行a对象的构造。
语句3,Test类的构造过程中,没有提供任何参数。所以会调用Test(){}方法进行b对象的构造.
语句2和语句4都调用了fun()函数,他们之间的区别在于,语句2调用的对象是a,语句4调用的对象是b。
从你问的问题来看,应该是刚刚接触C++编程的新手。
上面的问题主要涉及 构造函数, 函数重载的相关知识。
下面是摘自百度百科的说明:
构造函数 ,是一种特殊的方法 。主要用来在创建对象时初始化对象, 即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中 。特别的一个类可以有多个构造函数 ,可根据其参数个数的不同或参数类型的不同来区分它们 即构造函数的重载。
重载函数是函数的一种特殊情况,为方便使用,C++允许在同一范围中声明几个功能类似的同名函数,但是这些同名函数的形式参数(指参数的个数、类型或者顺序)必须不同,也就是说用同一个运算符完成不同的运算功能。这就是重载函数。重载函数常用来实现功能类似而所处理的数据类型不同的问题。
希望我的答案能够帮助到你,请采纳我的答案。
语句3,Test类的构造过程中,没有提供任何参数。所以会调用Test(){}方法进行b对象的构造.
语句2和语句4都调用了fun()函数,他们之间的区别在于,语句2调用的对象是a,语句4调用的对象是b。
从你问的问题来看,应该是刚刚接触C++编程的新手。
上面的问题主要涉及 构造函数, 函数重载的相关知识。
下面是摘自百度百科的说明:
构造函数 ,是一种特殊的方法 。主要用来在创建对象时初始化对象, 即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中 。特别的一个类可以有多个构造函数 ,可根据其参数个数的不同或参数类型的不同来区分它们 即构造函数的重载。
重载函数是函数的一种特殊情况,为方便使用,C++允许在同一范围中声明几个功能类似的同名函数,但是这些同名函数的形式参数(指参数的个数、类型或者顺序)必须不同,也就是说用同一个运算符完成不同的运算功能。这就是重载函数。重载函数常用来实现功能类似而所处理的数据类型不同的问题。
希望我的答案能够帮助到你,请采纳我的答案。
展开全部
#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;
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询