[英]Need help understanding the output
我有以下代码
#include <iostream>
using namespace std;
class Base {
private:
Base() {
cout<<"Base ctor has been called "<<endl;
};
public:
int a;
};
class Derived: public Base {
};
int main() {
Base* b1;
Derived d1();
cout<<d1;
return 0;
}
我不确定在上面的示例中如何创建派生的 class object d1。 代码编译并运行没有任何错误。 创建Derived d1();
? 为什么 output 的cout<<d1;
是1吗? Derived 的实例是否具有基数 class 的int a
? 感谢您的帮助!
在你的main
function 中, Derived d1();
实际上是一个名为d1
的 function 的声明,它不接受 arguments 并返回一个Derived
。 至于为什么打印1
, std::ostream
没有Derived (*)()
( d1
被隐式转换为)的重载,因此它将它转换为唯一合适的类型,即bool
。 尝试更换cout<<d1;
与cout << boolalpha << d1;
你会看到程序打印true
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.