2017-02-10 67 views
1

有一个具有非默认构造函数的类。在堆栈上创建对象的不同方法

#include <iostream> 

class Foo { 

public: 

    Foo(int a) { std::cout << "Constructor" << std::endl; }; 

} 

那么默认的构造函数不能被调用:

Foo obj; // compilation error 

非默认构造函数可以inkoved:

Foo obj(1); 

问:

会发生什么在编译的以下行中?

Foo obj(); 
+3

【最让人头疼的解析](https://en.wikipedia.org/wiki/Most_vexing_parse)。 –

回答

4

您可以创建一个没有参数的函数原型。

更具体...基本上没有任何反应

+0

另见“C Forward Declaration” – awiebe

+2

好的,你说那个函数存在,所以如果你不小心设法调用它并且没有提供实现,你会得到奇怪的链接时错误。 – awiebe

+0

当然,但在执行过程中没有任何反应,没有构造,没有堆栈分配,没有,线路没有任何影响 – Kupto