提问者:小点点

在对象名后使用括号时未调用用户定义的构造函数


#include<iostream>
using namespace std;

class A
{
    public:
    A()
    {
        cout<<"inside constructor\n";
    }
};

int main()
{
    A object1;
    A object2();
}

运行上面的代码,给出下面的输出

$./class.out
inside constructor

在这里,只针对object1创建调用的用户定义构造函数,而不针对object2。在后一种情况下不调用用户定义构造函数的原因是什么?


共1个答案

匿名用户

a object2();声明一个名为object2的函数,该函数不接受任何参数,并返回a。它不会创建一个对象,称为object2

您可以像使用对象1那样使用对象2;对象2{};来执行您想要的操作。