为了账号安全,请及时绑定邮箱和手机立即绑定

为什么没有调用构造函数?

为什么没有调用构造函数?

C++ C
三国纷争 2019-07-03 10:32:24
为什么没有调用构造函数?这段代码不符合我的预期。#include<iostream>using namespace std;class Class{     Class()     {         cout<<"default constructor called";     }     ~Class()     {         cout<<"destrutor called";     }};int main(){         Class object();}我期望输出‘默认构造函数调用’,但我没有看到任何输出。有什么问题吗?
查看完整描述

3 回答

?
潇湘沐

TA贡献1816条经验 获得超6个赞

没有。你的线路Class object();声明了一个函数。你想写的是Class object;

试试看。

您也可能对最烦人的解析感兴趣(正如其他人所注意到的)。一个很好的例子在有效STL项目6,第33页。(第12期印刷,2009年9月)具体而言,第35页顶部的示例是您所做的,它解释了为什么解析器将其作为函数声明处理。


查看完整回答
反对 回复 2019-07-03
?
慕少森

TA贡献2019条经验 获得超9个赞

不调用构造函数

因为构造函数实际上从未被调用过。

Class object();被解释为函数的声明。object不使用任何参数并返回Class[按价值计算]

试一试Class object;

编辑:

正如Mike注意到的,这与您要输入编译器的代码不完全相同。是构造函数/析构函数。public或者是Class结构?

然而,谷歌对于C+最令人烦恼的解析。


查看完整回答
反对 回复 2019-07-03
?
DIEA

TA贡献1820条经验 获得超2个赞

你可以这样使用它:

Class obj;//orClass *obj = new Class(/*constructor arguments*/);


查看完整回答
反对 回复 2019-07-03
  • 3 回答
  • 0 关注
  • 619 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信