世界之窗的英文导游词:请各位指点 C++ 类与对象 这儿的3小问题

来源:百度文库 编辑:神马品牌网 时间:2024/04/29 22:57:39
程序如下:
#include<iosteam.h>
class sam
{
int n;
public:
sam(){}
sam(int m){n=m;}
sam add(sam s1,sam s2)
{
this--n=s1.n+s2.n; //这里--是箭头
return(*this);
}
void disp()
{cout<<"n=<<endl;
};
void main()
{
sam s1(12),s2(8),s3,s4;
cout<<"s1:";
s1.disp();
cout<<"s2:";
s2.disp();
s4=s3.add(s1.s2);
cout<<"执行相加运算/n s3:";
s3.disp();
cout<<"s4:";s4.disp()
}
问题
(1)
sam(){}
sam(int m){n=m;}//这两个构造函数分别什么意思?是根据sam s1(12),s2(8),s3,s4;构造来的吗?
(2)
sam s1(12),s2(8),s3,s4; //这四个对象是一个一个的执行吧,执行完再顺序执行主函数下面的函数?
(3)
其他题中有
void main()
sample s1(10),s2(s1);
//里面的 s2(s1);具体什么意思?

(1)
sam(){}
sam(int m){n=m;}
这两个都是构造函数,在这里是使用了构造函数重载,其中一个有参数,一个没有参数,创建对象时,如果传递了参数就调用第二个构造函数,反之调用第一个构造函数。
sam sam1;//调用第一个构造函数
sam sam2(1);//传递了参数,调用第二个构造函数
(2)
sam s1(12),s2(8),s3,s4; //是一个个执行的,他们分别调用构造函数创建对象。
(3)
其他题中有
void main()
sample s1(10),s2(s1);
//里面的 s2(s1);这里是复制构造函数,在C++中如果程序员没有提供复制构造函数,则系统会自动给提供一个默认的复制构造函数。
复制构造函数就是 一个构造函数该函数有一个滋生对象的参数如:
sam(const sam& s);

1、无构造参数的构造函数,只是创建一个类的实例,但并不对类的实例的属性初始化,而有构造参数的构造函数则相反
2、是
3、s2(s1)应该是复制构造函数吧