【发布时间】:2021-10-23 00:02:13
【问题描述】:
我有以下代码
#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;
}
我不确定在上面的示例中如何创建派生类对象 d1。代码编译并运行没有任何错误。创建 Derived d1(); 时调用了哪种类型的构造函数?为什么cout<<d1; 的输出为 1? Derived 的实例是否有基类的int a?感谢大家的帮助!
【问题讨论】:
-
Derived d1();将d1声明为一个函数,不接受任何参数并返回一个Derived对象。 -
@Someprogrammerdude 啊我明白了!听起来不错。为什么 cout 部分的输出为 1?
-
这有点复杂,但所有函数都被认为是“真实的”,这意味着它是
operator<<的bool重载,它使用true值调用。除非设置了boolalpha标志,否则它将打印为1。
标签: c++ inheritance