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

27 篇文章 0 订阅
24 篇文章 0 订阅

这里的测试代码主要是帮助自己了解在类中的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;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值