C++如何向函数传递对象
2015-01-03 16:17
288 查看
一.值传递
函数中如果对对象进行了修改,对象的值不变;相当于创建对象的一个副本传递给函数
#include<iostream>
using namespace std;
class Test
{
public:
Test(int a){num=a;}
~Test(){}
void setNum(int a){num=a;}
int GetNum(){return num;}
private:
int num;
};
//值传递
void Add(Test t)
{
int x=t.GetNum()+t.GetNum();//值传递,相当于为num创建一个副本值为100
t.setNum(x);
cout<<t.GetNum()<<endl;
}
int main()
{
Test tt(100);
Add(tt);
cout<<tt.GetNum()<<endl;//原对象的值没有变化,变化的是NUM的副本
return 0;
}
二.地址传递
传递的是对象的地址,函数对对象的改变直接改变对象
#include<iostream>
using namespace std;
class Test
{
public:
Test(int a){num=a;}
~Test(){}
void setNum(int a){num=a;}
int GetNum(){return num;}
private:
int num;
};
//对象指针作为函数参数
void Add(Test *t)
{
int x=t->GetNum()+t->GetNum();//用t->,不能用t.
t->setNum(x);
cout<<t->GetNum()<<endl;
}
int main()
{
Test tt(100);
Add(&tt);
cout<<tt.GetNum()<<endl;
return 0;
}
三.引用传递
引用传递实际上就是给对象起了一个别名,当操作别名时实际上就是操作对象本身
#include<iostream>
using namespace std;
class Test
{
public:
Test(int a){num=a;}
~Test(){}
void setNum(int a){num=a;}
int GetNum(){return num;}
private:
int num;
};
//对象指针作为函数参数
void Add(Test *t)
{
int x=t->GetNum()+t->GetNum();//用t->,不能用t.
t->setNum(x);
cout<<t->GetNum()<<endl;
}
int main()
{
Test tt(100);
Add(&tt);
cout<<tt.GetNum()<<endl;
return 0;
}
函数中如果对对象进行了修改,对象的值不变;相当于创建对象的一个副本传递给函数
#include<iostream>
using namespace std;
class Test
{
public:
Test(int a){num=a;}
~Test(){}
void setNum(int a){num=a;}
int GetNum(){return num;}
private:
int num;
};
//值传递
void Add(Test t)
{
int x=t.GetNum()+t.GetNum();//值传递,相当于为num创建一个副本值为100
t.setNum(x);
cout<<t.GetNum()<<endl;
}
int main()
{
Test tt(100);
Add(tt);
cout<<tt.GetNum()<<endl;//原对象的值没有变化,变化的是NUM的副本
return 0;
}
二.地址传递
传递的是对象的地址,函数对对象的改变直接改变对象
#include<iostream>
using namespace std;
class Test
{
public:
Test(int a){num=a;}
~Test(){}
void setNum(int a){num=a;}
int GetNum(){return num;}
private:
int num;
};
//对象指针作为函数参数
void Add(Test *t)
{
int x=t->GetNum()+t->GetNum();//用t->,不能用t.
t->setNum(x);
cout<<t->GetNum()<<endl;
}
int main()
{
Test tt(100);
Add(&tt);
cout<<tt.GetNum()<<endl;
return 0;
}
三.引用传递
引用传递实际上就是给对象起了一个别名,当操作别名时实际上就是操作对象本身
#include<iostream>
using namespace std;
class Test
{
public:
Test(int a){num=a;}
~Test(){}
void setNum(int a){num=a;}
int GetNum(){return num;}
private:
int num;
};
//对象指针作为函数参数
void Add(Test *t)
{
int x=t->GetNum()+t->GetNum();//用t->,不能用t.
t->setNum(x);
cout<<t->GetNum()<<endl;
}
int main()
{
Test tt(100);
Add(&tt);
cout<<tt.GetNum()<<endl;
return 0;
}
相关文章推荐
- 如何在html标记中调用的函数里传递对象
- C++对象布局及多态之虚成员函数如何调用
- C++:向函数传递对象(对象、对象指针、对象引用)
- new创建对象的如何传递构造参数-c++
- [C/C++]函数如何返回struct或class对象
- Java函数传递对象与C++传递引用
- C++之把流对象当做函数参数传递
- C++之不同对象的成员函数如何引用指定对象的数据成员
- C++ 学习之路(3):向函数传递对象
- C++对象模型之编译器如何处理函数返回一个对象
- [C/C++]函数如何返回struct或class对象
- (转载)你好,C++(26)如何与函数内部进行数据交换?5.1.3 函数参数的传递
- 你好,C++(26)如何与函数内部进行数据交换?5.1.3 函数参数的传递
- c++中如何给函数传递数组参数
- C++的异常对象如何被传递
- c++中巧用函数对象传递附加信息
- 如何在函数中判断传递的对象指向的是哪个类
- C++传递对象函数指针作为参数
- ModernC++开发实践--如何高效的传递对象给异步方法
- C++如何向函数传递数组