27

なぜこれが機能しないのか理解できないと思います。' ' ポインターをコンストラクター内で使用できるとずっと思っていましたが、初期化リストでthis' ' を使用できないことを知りませんでした。this

#include <iostream>

class A {
    public:
        int a;
        int b;
        A(int a = 0, int b = 0) : this->a(a), this->b(b) { }
        void print() {
        std::cout << a << ", " << b << std::endl;
    }
};

int main() {
    A a;
    a.print();
}

それに関連する詳細を知りたいです。

4

2 に答える 2

30

this->aはメンバー アクセス式であるため文法的に無効ですが、そこでは識別子 (または基本クラスの型指定子) のみが許可されます。

C++ 標準 [class.base.init] から、

mem-initializer-id:
      class-or-decltype
      識別子

于 2017-01-12T14:54:40.220 に答える