1、把全局函数转化成成员函数,通过this指针隐藏左操作数
Test add(Test &t1, Test &t2)===》Test add(Test &t2)
2、把成员函数转换成全局函数,多了一个参数
void printAB()===》void printAB(Test *pthis)
#include "iostream"
using namespace std;
class Test {
public:
int a;
int b;
public:
//2、全局函数转为成员函数,少了一个参数
Test TestAdd(Test &t2)
{
Test tmp((this->a + t2.a), (this->b + t2.b));
return tmp; //返回匿名对象
}
//1、把成员函数转为全局函数多了一个参数
void printT()
{
cout << "a : " << a << "b : " << b << endl;
}
Test(int a = 0, int b = 0)
{
this->a = a;
this->b = b;
}
~Test()
{
cout << "a:" << a << "b:" << b;
cout << "析构函数自动被调用" << endl;
}
};
//1、把成员函数转为全局函数多了一个参数
void printT(Test *pTthis)
{
cout << "a : " << pTthis->a << "b : " << pTthis->b << endl;
}
//全局函数的方法
//2、全局函数转为成员函数,少了一个参数
Test TestAdd(Test &t1, Test &t2)
{
Test tmp;
return tmp;
}
int main()
{
Test t1(1, 2);
Test t2(3, 4);
Test t3;
//全局函数方法
t3 = TestAdd(t1, t2);
//成员函数方法
{
Test t4 = t1.TestAdd(t2); //匿名对象直接转化成t4
t4.printT();
Test t5;
t5 = t1.TestAdd(t2); //匿名对象复制给t5
t5.printT();
}
system("pause");
}
**3、函数返回元素和返回引用**
Test& add(Test &t2) //*this //函数返回引用
{
this->a = this->a + t2.getA();
this->b = this->b + t2.getB();
return *this; //*操作让this指针回到元素状态
}
Test add2(Test &t2) //*this //函数返回元素
{
//t3是局部变量
Test t3(this->a+t2.getA(), this->b + t2.getB()) ;
return t3;
}
#include "iostream"
using namespace std;
class Test {
public:
int a;
int b;
public:
//2、全局函数转为成员函数,少了一个参数
Test TestAdd(Test &t2)
{
Test tmp((this->a + t2.a), (this->b + t2.b));
return tmp; //返回匿名对象
}
//应用场景 t1 = t1 + t2 t1.TestAdd2(t2);
Test& TestAdd2(Test &t2) //返回一个引用 相当于返回自身 返回t1这个元素 this就是t1的首地址&t1
{
this->a = this->a + t2.a;
this->b = this->b + t2.b;
return *this; //相当于*(&t1)
}
//1、把成员函数转为全局函数多了一个参数
void printT()
{
cout << "a : " << a << "b : " << b << endl;
}
Test(int a = 0, int b = 0)
{
this->a = a;
this->b = b;
}
~Test()
{
cout << "a:" << a << "b:" << b;
cout << "析构函数自动被调用" << endl;
}
};
//1、把成员函数转为全局函数多了一个参数
void printT(Test *pTthis)
{
cout << "a : " << pTthis->a << "b : " << pTthis->b << endl;
}
//全局函数的方法
//2、全局函数转为成员函数,少了一个参数
Test TestAdd(Test &t1, Test &t2)
{
Test tmp;
return tmp;
}
void main()
{
Test t1(1, 2);
Test t2(3, 4);
//应用场景 t1 = t1 + t2
t1.TestAdd2(t2);
t1.printT();
}