29 c++ constructor this
我可以从类构造函数中将"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);
}
Run Code Online (Sandbox Code Playgroud)
我认为这不起作用,但似乎.这种标准行为,还是仅仅是未定义的行为?
Mat*_*ttK 32
在C++中实例化对象时,构造函数中的代码是最后执行的事情.所有其他初始化,包括超类初始化,超类构造函数执行和内存分配事先发生.构造函数中的代码实际上只是在构造对象后执行其他初始化.因此,在类的构造函数中使用"this"指针并假设它指向一个完全构造的对象是完全有效的.
当然,如果尚未在构造函数代码中初始化它们,仍需要注意未初始化的成员变量.