为什么没有调用构造函数?
这段代码并不像我期望的那样。
#include<iostream> using namespace std; class Class { Class() { cout<<"default constructor called"; } ~Class() { cout<<"destrutor called"; } }; int main() { Class object(); }
我期望输出的默认构造函数叫',但我没有看到任何东西作为输出。 问题是什么?
不。 你的line Class object();
宣布了一个功能。 你想要写的是Class object;
试试看。
你也可能对最令人头疼的解析感兴趣(正如其他人所指出的那样)。 一个很好的例子是在第33页的Effective STL Item 6中。(在2009年9月的第12期)特别是第35页顶部的示例是您所做的,它解释了解析器为什么将其作为函数声明处理。
没有调用构造函数
因为构造函数实际上不会被调用。
Class object();
被解释为一个没有参数的函数object
的声明,并返回一个Class
[按值]
尝试Class object;
编辑 :
正如Mike所注意到的,这与编译器提供的代码不完全相同。 构造函数/析构函数是public
还是Class
是一个struct?
但谷歌C ++最令人烦恼的解析。
你可以像这样使用它:
Class obj; //or Class *obj = new Class(/*constructor arguments*/);