您的位置:首页 > 其它

函数参数传递与构造函数和析构函数

2005-08-06 15:49 351 查看
#include<iostream.h>
class myclass
{
public:
myclass(int n);
~myclass();

void set_i(int n) { i=n; }
int get_i() { return i; }
private:
int i;
};
myclass::myclass(int n)
{
i=n;
cout<<"Constructing "<<i<<endl;
}
myclass::~myclass()
{
cout<<"Destroying "<<i<<endl;
}

void fun(myclass obj)//1值传递
//void fun(myclass &obj)//2引用传递
{
obj.set_i(2);
cout<<"This is local i:"<<obj.get_i();
cout<<endl;
}

main()
{
myclass obj(1);
fun(obj);
cout<<"This is in main:";
cout<<obj.get_i()<<endl;

return 0;
}
结果1(值传递):
Constructing 1
This is local i:2
Destroying 2
This is in main:1
Destroying 1
当由于对象要传给函数而产生对象的拷贝时,不调用对象的构造函数,
但当函数内部的对象的拷贝撤消时,要调用对象的析构函数。

结果2(引用传递):
Constructing 1
This is local i:2
This is in main:2
Destroying 2 //1已经改变成了2
引用传递没有调用构造函数和析构函数
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: