【发布时间】:2013-10-08 06:08:36
【问题描述】:
假设我们有两个类:
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 个类是不可能的?
【问题讨论】:
-
你真的希望
Child有两个向量,还是你真的打算只有一个向量? -
我只创建
Child-type 对象并且只想要Child的向量
标签: c++ oop inheritance