我不明白的默认构造函数

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上回答了,请给我链接...我找不到答案......

回答所有回答的人和所有的coatorators

(你有点太多了,无法一个接一个)

Sha*_*our 7

问题是这个:

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)