32
struct Foo
{
 void f()
 {
 // (*)
 }
};

(*) でマークされた行の「this」のタイプは何ですか?

const Foo*またはFoo*ですか?

4

4 に答える 4

70

n3376 9.3.2/1

非静的 (9.3) メンバー関数の本体では、キーワード this は、関数が呼び出されるオブジェクトのアドレスを値とする prvalue 式です。

クラス X のメンバー関数での this の型は X*です。メンバー関数が const と宣言されている場合、this の型は const X* であり、メンバー関数が volatile と宣言されている場合、this の型は volatile X* であり、メンバー関数が const volatile と宣言されている場合、this の型は const です。揮発性 X*.

于 2013-06-17T11:35:11.587 に答える