#include <stdlib.h>
#include <iostream>
#include <vector>
#include <string>
class A
{
public:
std::string s;
A()
{
s = "string";
new(this)A(*this);
}
};
int main()
{
A a;
std::cout<<a.s;
return 0;
}
我在输出中得到空字符串。 C ++标准对这种行为有何看法?
答案 0 :(得分:4)
这里必须至少有两个问题:
更不用说new(this)
本身就是可疑的。
答案 1 :(得分:0)
你通过这样做连续两次调用s
的构造函数,因为行为是未定义的(很可能是某些内存被泄露)。