C++ 面向对象 类成员函数this指针

每个类成员函数都只涉及一个对象, 即调用它的对象。 但有时候方法可能涉及到两个对象, 在这种情况下需要使用C++ 的 this 指针

假设将方法命名为topval(), 则函数调用stock1.topval()将访问stock1的对象数据;stock2.topval()将访问stock2的对象数据;

如果希望该方法的两个对象进行对比, 则必须将第二个对象作为参数传递给它。这时候涉及到隐式和显式:

top = stock1.topval(stock2);

隐式的访问了stock1, 显示的访问了stock2, this 则代表的是 stock1, *this 则是对象指针

// 轻松使用c++

// 5. 面向对象 this指针, 面向对象的对象指针 完成
#include <iostream>
#include <string>

using namespace std;

class Over {
private:


public:
    int h = 2;
};


class Stock {
private:
    /* data */
    int h;
public:
    Stock(int abc);

    ~Stock();

    int abc();

    Stock &topval(Stock &s);

    Stock &topval1(Over &s);
};

Stock::Stock(int abc) {
    h = abc;
    printf("%d\n", h);
}

Stock::~Stock() {
}

int Stock::abc() {
    this->h = 10;
    printf("%d\n", this->h);
    printf("%d\n", h);
    return 0;
}

Stock &Stock::topval(Stock &s) {
    printf("this-h: %d, s2.h: %d\n", this->h, s.h);
}

Stock &Stock::topval1(Over &s) {
    printf("this-h: %d, s2.h: %d\n", this->h, s.h);
}


int main(int argc, char const *argv[]) {
    Stock s1(123);
    s1.abc();

    Stock s2(222);
    s1.topval(s2);

    Over s3;
    s1.topval1(s3);

    return 0;
}

原文链接: https://www.cnblogs.com/renfanzi/p/9178637.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/275926

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月15日 上午1:20
下一篇 2023年2月15日 上午1:21

相关推荐