クラス コンストラクター内から "this" をポインターとして関数に渡し、それを使用してコンストラクターが戻る前にオブジェクトのメンバーを指すことはできますか?
アクセスされたメンバーが関数呼び出しの前に適切に初期化されている限り、これを行うのは安全ですか?
例として:
#include <iostream>
class Stuff
{
public:
static void print_number(void *param)
{
std::cout << reinterpret_cast<Stuff*>(param)->number;
}
int number;
Stuff(int number_)
: number(number_)
{
print_number(this);
}
};
void main() {
Stuff stuff(12345);
}
これはうまくいかないと思っていましたが、うまくいくようです。これは標準的な動作ですか、それとも未定義の動作だけですか?