2013-06-17 4 views
25

thisポインタ [class.this]、C++標準状態において: クラスXのメンバ関数でthisのタイプはある`this`がconstでない場合、なぜそれを変更できないのですか?

すなわちthisconstではありません。しかし、なぜそれが

struct M { 
    M() { this = new M; } 
}; 

は、言い換えれば

error: invalid lvalue in assignment <-- gcc 
'=' : left operand must be l-value <-- VC++ 
'=' : left operand must be l-value <-- clang++ 
'=' : left operand must be l-value <-- ICC 
(source: some online compiler frontends) 

を与えること、その後で、thisconstではありませんが、それは本当にです!

+7

キーワード 'this'は変数ではないため、定数であるかどうかを示すことはできません。 –

+0

これが機能しても、無限ループだけが構築されています。 –

+0

@vlad_tepesch:それは、または無限の再帰(あなたがPythonでできるように)です。しかし、これは問題ではありませんでした。 –

答えて

関連する問題