为什么构造/析构函数不是在使用所谓的malloc和free在C++中,而不是当我们使用new和delete,构造函数/析构函数被调用?为什么会这样?
当我们在c ++中对类使用malloc/free时,不会创建对象.那为什么这段代码有效呢?如果未创建对象,则它不得提供下面提到的输出.
class Test
{
public:
Test()
{
cout << "Test : ctor\r\n";
}
~Test()
{
cout << "Test : dtor\r\n";
}
void Hello()
{
cout << "Test : Hello World\r\n";
}
};
int main()
{
cout << "2\n";
Test* t2 = (Test*) malloc(sizeof Test);
t2->Hello();
free(t2);
return 0;
}
OUTPUT:
Hello World
Run Code Online (Sandbox Code Playgroud) c++ ×2