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