gpt4 book ai didi

c++ - 我不明白的关于默认构造函数的一些事情

转载 作者:太空狗 更新时间:2023-10-29 23:28:00 25 4
gpt4 key购买 nike

我有这段代码:

#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);
}

编译:

$  g++ main.cc -Wall

当我运行它时,我得到了:

some random bands :
http://www.metal-archives.com/band/view/id/74239

ZombieFetus band1(); 到底是怎么回事?程序是什么?这听起来像是一个初学者问题,如果它已经在 stackoverflow 上得到解答,请给我链接...我找不到答案...

感谢所有回答的人和所有评论者

(你有点太多了,无法一一感谢)

最佳答案

问题在于:

ZombieFetus  band1();

被解释为函数声明,您在 C++11 中有两个可能的修复:

ZombieFetus  band1{} ;

C++11 之前的版本:

ZombieFetus  band1;

clang 多了一点helpful在这里并警告:

warning: empty parentheses interpreted as a function declaration [-Wvexing-parse]
ZombieFetus band1();
^

关于c++ - 我不明白的关于默认构造函数的一些事情,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20233473/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com