sha*_*oth 3 c++ constructor class new-operator
假设我有以下课程:
class Sample {
public:
Sample( int ) {}
};
Run Code Online (Sandbox Code Playgroud)
一些函数返回 int
int SomeFunction()
{
return 0;
}
Run Code Online (Sandbox Code Playgroud)
而这段代码:
Sample* sample = new Sample( SomeFunction() );
Run Code Online (Sandbox Code Playgroud)
现在我期待以下顺序:
SomeFunction() 然后运行::operator new() 然后运行以为对象分配内存class Sample 构造函数在已分配的内存上运行这个顺序是固定的还是可以通过实现来改变,例如说第一个内存被分配,然后SomeFunction()调用,然后运行构造函数?换句话说,可以调用operator new()函数并调用类构造函数与任何东西交错吗?
订单未指定.[5.3.4]/21内容如下:
在评估构造函数参数之前或在评估构造函数参数之后但在输入构造函数之前是否调用[operator new]是未指定的.如果[operator new]返回空指针或使用异常退出,还是未指定是否计算构造函数的参数.