Ele*_*fee 5 c++ inheritance class
基本问题归结为:
// header
class Calculator
{
public:
virtual int calculate(int a, int b);
};
class Adder : public Calculator
{
};
// class file
int Adder::calculate(int a, int b) {return a + b;} // gives error
Run Code Online (Sandbox Code Playgroud)
为什么我不被允许这样做?
我会假设,既然Adder继承了Calculator成员,我就可以将自己的身体定义为自己的身体,但显然这是不可能的......
我已经看到了其他答案,他们只需要在子类中再次编写成员定义,但对我来说,似乎有很多行代码浪费了一遍又一遍地重复相同的文本,所以问题是...... .
如果不在子类的定义中覆盖它,为什么我不能这样做呢?
此外,请注意,这不是一个关于如何修复错误的问题,这是关于C++的机制的问题,以及为什么允许或不允许执行某些操作的问题
你不能这样做,因为你没有明确表示 Adder 有一个计算方法 - 而 C++ 对它是严格的。如果您在单独的源文件中编写 Calculator::calculate 会发生什么?