【发布时间】:2021-10-13 16:25:44
【问题描述】:
我正在学习 C++ 中的继承。因此,每当创建类的对象时,都会调用构造函数。 而构造函数用于初始化类变量。
#include<bits/stdc++.h>
using namespace std;
class Base
{
protected:
int x;
public:
Base(int a): x(a)
{
cout<<"Base"<<endl;
}
};
class Derived: public Base
{
private:
int y;
public:
Derived(int b):y(b)
{
cout<<"Derived"<<endl;
}
void print()
{
cout<<x<<" "<<y<<endl;
}
};
int main()
{
Derived d(20);
d.print();
return 0;
}
从这里开始,我正在创建基类对象并在其上调用打印函数。所以我应该得到输出。 但是我的代码给出了编译器错误,为什么? 谁能帮我理解这个?
【问题讨论】:
-
您认为
Derived构造函数在哪里设置x的值? -
编译器错误信息是否隐藏?
-
@S.M.调用 'Base::Base()' 没有匹配的函数
-
您对下面提出的解决方案有任何疑问或问题吗?
标签: c++ class object inheritance