假设我们有两个类:
class Parent
{
public:
vector<int> x;
protected:
void Method();
}
和
class Child : public Parent
{
public:
vector<double> x;
}
并且该方法Method()
进行操作x
并进行一些操作,这对两种类型都兼容int
和double
:
void Parent::Method()
{
x.push_back(1);
}
然后,如果我将创建一个Child
类的实例,初始化vector<double> x
,然后Method()
从基类调用派生方法,C++ 将尝试对Parent
' 成员x
而不是Child
' 成员进行操作。有什么方法可以使基类方法自动对属于已创建类的成员进行Child
操作vector<int> x
?
编辑: 正如 McAden 正确指出的那样,这种行为可以使用多态性轻松实现:三个类 - 1 个基类和 2 个派生类。但这是否意味着只有 2 个班级是不可能的?