gpt4 book ai didi

c++11 - 继承构造函数应该如何表现?

转载 作者:行者123 更新时间:2023-12-01 03:51:46 26 4
gpt4 key购买 nike

这个简单的代码产生了一些意想不到的结果。至少对于我来说...

#include <iostream>
class cls1
{
public:
cls1(){std::cout << "cls1()" << std::endl;};
cls1(int, int) : cls1() {std::cout << "cls1(int, int)" << std::endl;}
};

class cls2 : public cls1
{
public:
using cls1::cls1;
cls2() = delete;
};

int main()
{
cls2 c();
return 0;
}

我希望输出为: cls1() 作为 cls2 的默认构造函数被删除,但代码不输出任何内容,尽管它编译并运行良好。我正在使用 GCC 版本。 4.8.2.编译:
$ g++ -std=c++11 -g test.cpp

$ ./a.out

问题是:它应该如何表现?

谢谢!

最佳答案

您实际上并没有创建 cls2 的实例在您的 main() ;您正在声明一个返回 cls2 的函数.这是“最烦人的解析”的一个实例。例如,参见 http://en.wikipedia.org/wiki/Most_vexing_parse

关于c++11 - 继承构造函数应该如何表现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21786832/

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