编译器提供的默认构造函数
到底是什么都不干,还是会给成员赋初值?
[解决办法]
#include <iostream>
#include <string>
#include <new>
using namespace std;
class A
{
public:
int data;
string str;
};
int main()
{
char buff[100] = "abcdefghijklomnopresgoiuoisufjlsglasdjflsdjflsajfhlcvhskdfhskdfhsfhssdf";
cout << buff << endl; //内存中是垃圾值
A* a = new(buff) A; //用placement new来申请内存并且构造对象
cout << a->data << endl; //简单起见,用了public变量
cout << a->str << endl;
a->~A(); //手动调用析构函数,不能用delete
return 0;
}
//结果
//int 打印的值不是0
//string 什么都没打印。