• 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
    ", h);
    }
    
    Stock::~Stock() {
    }
    
    int Stock::abc() {
        this->h = 10;
        printf("%d
    ", this->h);
        printf("%d
    ", h);
        return 0;
    }
    
    Stock &Stock::topval(Stock &s) {
        printf("this-h: %d, s2.h: %d
    ", this->h, s.h);
    }
    
    Stock &Stock::topval1(Over &s) {
        printf("this-h: %d, s2.h: %d
    ", 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;
    }
  • 相关阅读:
    Luogu4433:[COCI2009-2010#1] ALADIN(类欧几里德算法)
    Bzoj4766: 文艺计算姬(Matrix-tree/prufer)
    Bzoj5019: [Snoi2017]遗失的答案
    [HAOI2009]逆序对数列(加强)
    CF850F Rainbow Balls
    Luogu4887 第十四分块(前体)
    Luogu2483 [SDOI2010]魔法猪学院(可并堆)
    导数积分表
    Bzoj2395: [Balkan 2011]Timeismoney(最小乘积生成树)
    Min_25筛
  • 原文地址:https://www.cnblogs.com/renfanzi/p/9178637.html
Copyright © 2020-2023  润新知