码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2018-06-13 17:22:20      阅读:186      评论:0      收藏:0      [点我收藏+]

标签:ace   []   style   情况   成员   成员函数   printf   col   name   

每个类成员函数都只涉及一个对象, 即调用它的对象。 但有时候方法可能涉及到两个对象, 在这种情况下需要使用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;
}

 

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

标签:ace   []   style   情况   成员   成员函数   printf   col   name   

原文地址:https://www.cnblogs.com/renfanzi/p/9178637.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!