The*_*ine 2 c++ linux constructor g++ default-constructor
我有这个代码:
#include <iostream>
class ZombieFetus{
private:
public:
ZombieFetus();
};
ZombieFetus::ZombieFetus(){
std::cout << "http://www.metal-archives.com/band/view/id/55878" << std::endl;
};
class FaceOfAVirus{
private:
public:
FaceOfAVirus(int);
};
FaceOfAVirus::FaceOfAVirus(int i){
std::cout << "http://www.metal-archives.com/band/view/id/74239" << std::endl;
};
int main(int argc, char **argv){
std::cout << "some random bands :" << std::endl;
ZombieFetus band1();
FaceOfAVirus band2(0);
}
Run Code Online (Sandbox Code Playgroud)
编译:
$ g++ main.cc -Wall
Run Code Online (Sandbox Code Playgroud)
当我运行它时,我得到了:
some random bands :
http://www.metal-archives.com/band/view/id/74239
Run Code Online (Sandbox Code Playgroud)
到底是什么ZombieFetus band1();?该计划是什么?这听起来像是一个初学者的问题,如果已经在stackoverflow上回答了,请给我链接...我找不到答案......
(你有点太多了,无法一个接一个)
问题是这个:
ZombieFetus band1();
Run Code Online (Sandbox Code Playgroud)
是一个函数声明,你在C++ 11中有两个可能的修复:
ZombieFetus band1{} ;
Run Code Online (Sandbox Code Playgroud)
或者预先C++ 11:
ZombieFetus band1;
Run Code Online (Sandbox Code Playgroud)
clang在这里有点帮助并警告:
warning: empty parentheses interpreted as a function declaration [-Wvexing-parse]
ZombieFetus band1();
^
Run Code Online (Sandbox Code Playgroud)