您的位置:首页 > 其它

全局函数和成员函数的this转换

2016-04-11 00:00 295 查看
这里的测试代码主要是帮助自己了解在类中的this指针。

使用的测试代码主要是:

1、使用全局函数实现对象的相加;

A global_add(A &a,A &b);
使用全局函数实现对象的相加,必须要在实参中传递两个对象,返回值是对象的类型。


2、使用成员函数实现对象的相加;

A& member_add(A &ab);
系统会解释为:A& member_add(A *pobj,A &ab);
即:会增加一个对象的地址参数。
使用成员函数实现两个对象的相加可省略一个参数。


3、测试代码:

#include <iostream>
//using namespace std;
class A{
public:
//构造函数
A(int aa,int ba):a(aa),b(ba){}
//setter函数
void setA(int a){this->a = a;}
//getter函数
int getA(void){return a;}
//setter函数
void setB(int b){this->b = b;}
//getter函数
int getB(void){return b;}
//成员测试函数
A& member_add(A &ab)
{
this->a = this->a+ab.getA();
this->b = this->b+ab.getB();
return *this;
}
//显示函数
void print()
{
std::cout << "a = " << getA() << std::endl;
std::cout << "b = " << getB() << std::endl;
}
private:
int a;
int b;
};
//全局测试函数
A global_add(A &a,A &b)
{
A temp = A(a.getA()+b.getA(),a.getB()+b.getB());
return temp;
}

int main(void)
{
A a(1,2);
A b(3,4);
//A temp = global_add(a,b);
a.member_add(b);
a.print();
b.member_add(a);
b.print();
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: