C++中自定义对象的构造函数是编译器调用的吗?

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;
}