thisポインタ

クラスのメンバ関数内でのみ使用できるthisポインタというものがあります。

これはそのクラスのインスタンス自身を表すポインタだそうです。

#include <iostream>

class CClass {
public:
    int m_num;
    
    CClass(int);
    int getNum ();
};

CClass::CClass (int num) {
    this->m_num = num;
}

int CClass::getNum () {
    return this->m_num;
}

int main () {
    CClass obj(199);
    
    std::cout << obj.getNum() << std::endl;
    return 0;
}

コンストラクタとgetNum関数内でthisを使用しています。今まではこういう場合

CClass::CClass (int num) {
    m_num = num;
}

上記のように書いていました。

ですが、もし仮引数との名前の衝突があった場合にメンバ変数かどうかが判断できなくなるため、thisをつけて明示的に書くほうが良いのかもしれません。

もちろんm_numといったように命名規約で衝突が起こらないようにするというやり方もありますが、個人的にはthisつけた方が良いような気がしてきました。

ということでこれからはなるべくthisを使うようにします。