C++ 默认构造函数

一个 Struct 的定义

1 struct book
2 {
3     book(){}
4     book(string s){ name = s; }
5     string name;
6 }

如果调用 

1 book newbook;
2 book newbook("harry potter");

都没有错,但是调用

1 book newbook();

就会出错,一种理解就是编译器会认为这是一个函数的声明,但是改成

1 typename book newbook();

也不行,g++报的 error 根据搜索说明这里就不应该加上 typename。

至此我也不知道为什么这样不行,可能只是一种规定而已。

一些参考:

http://stackoverflow.com/questions/2417065/does-the-default-constructor-initialize-built-in-types

 

posted on 2017-03-08 11:56  daghlny  阅读(195)  评论(0编辑  收藏  举报

导航