当前位置: 首页 > 知识库问答 >
问题:

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

陶高峻
2023-03-14
#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个答案

骆文华
2023-03-14

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

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

 类似资料:
  • 我试图让类circle扩展Shape类,但JUnit不断出错,说构造函数圆(Point,int)未定义,我如何定义圆构造函数与公共圆(Point[]center,int aradius)不同? 圆圈Java语言

  • 问题内容: 我一直在寻找过滤器在Angularjs中的工作方式,我看到我们需要发送2套括号。 它是什么意思,以及我们如何使用JavaScript处理它? 问题答案: 这意味着第一个函数()返回另一个函数,然后立即调用该返回的函数。例如:

  • 我看到了过滤器在Angularjs中的工作原理,我看到我们需要发送两组括号。 它意味着什么,我们如何用JavaScript处理它?

  • 请考虑以下代码: GCC和Clang编译代码时没有错误,也就是说,使用花括号时调用了复制构造函数。但是msvc拒绝了https://godbolt.org/z/49onKj的错误: 当我指定显式调用复制构造函数(因为不是右值),然后mvsc接受代码。 谁是对的?应该调用什么类型的构造函数来 语句?

  • 在.citydoor.imports.catalog.tools中打包;

  • 如果我有一个简单的结构Foo,定义如下,它是一个POD: 现在想象一下,我想默认初始化成员并直接执行以下操作: 结构不再是吊舱!即使有这样的构造函数: Foo已经失去了它的PODness... 现在,棘手的部分开始了。想象一下,我想添加一个构造函数,取一个: 现在,傅绝对不是一个豆荚。但如果添加默认构造函数: 福现在是一个豆荚! 因此,正如您所看到的,即使我只是想使用第二个示例中的默认值,我也会失