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

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

这段代码不符合我的预期。

#include<iostream>using namespace std;class Class{
    Class()
    {
        cout<<"default constructor called";
    }

    ~Class()
    {
        cout<<"destrutor called";
    }};int main(){    
    Class object();}

我期望输出‘默认构造函数调用’,但我没有看到任何输出。有什么问题吗?


三国纷争
浏览 620回答 3
3回答

潇湘沐

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

慕少森

不调用构造函数因为构造函数实际上从未被调用过。Class object();被解释为函数的声明。object不使用任何参数并返回Class[按价值计算]试一试Class object;编辑:正如Mike注意到的,这与您要输入编译器的代码不完全相同。是构造函数/析构函数。public或者是Class结构?然而,谷歌对于C+最令人烦恼的解析。

DIEA

你可以这样使用它:Class&nbsp;obj;//orClass&nbsp;*obj&nbsp;=&nbsp;new&nbsp;Class(/*constructor&nbsp;arguments*/);
打开App,查看更多内容
随时随地看视频慕课网APP