首页 > 解决方案 > 当我在对象名称后使用括号时未调用用户定义的构造函数

问题描述

#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. 在后一种情况下不调用用户定义的构造函数的原因可能是什么?

标签: c++

解决方案


A object2();声明一个被调用的函数object2,它不接受任何参数并返回一个A. 它不会创建一个A名为object2.

您可以A object2;像使用 一样使用object1,也A object2{};可以做您想做的事情。


推荐阅读