C++中使用new运算符为自定义类型对象申请空间时,谁调用自定义类型的构造函数?编译器吗?
如果有无参构造函数编译器会自动调用,没有无参构造函数你必须手动指定
#include <iostream>
class A
{
public:
A() { std::cout << "A::A()\n"; }
A(int a) { std::cout << "A::A(int): a=" << a << "\n"; }
~A() { std::cout << "A::~A()\n"; }
};
int main()
{
A *a1 = new A; // 编译器自动调用A::A()
A *a2 = new A(123); // 编译器自动调用A::A(int)
delete a1; // 编译器自动调用A::~A()
delete a2; // 编译器自动调用A::~A()
return 0;
}