【发布时间】:2017-11-22 14:40:07
【问题描述】:
因此假设存在具有函数 foo 的 A 类。
A 类是几个类的父类,它们都具有函数 foo。
所有子类都需要
A::foo 并在其上添加。
例如:
class A
{
public:
void foo()
{
print('A');
}
};
class B:public A
{
public:
void foo()
{
print("B");
}
};
class C:public A
{
public:
void foo()
{
print("C");
}
};
void main()
{
B b;
C c;
c.foo()// now only goes to C::foo(), meaning print C. I want it to to also go into A::foo() meaning print AC
b.foo()//now only goes to B::foo(),meaning print B. want it to print AB
}
如果我想用 foo 函数添加 class D : A,它也会先添加 A::foo(),然后再添加 D::foo()
对不起,如果我遗漏了一些明显的东西。
编辑:因为不清楚问题是是否有自动的方法。
编辑:找到解决方法:
class A
{
virtual void foo2(){}
public:
void foo()
{
print('A');
foo2();
}
};
class B:public A
{
void foo2()
{
print("B");
}
public:
};
class C:public A
{
void foo2()
{
print("C");
}
public:
};
void main()
{
B b;
C c;
c.foo()// now prints AC
b.foo()//now prints AB
}
似乎是多余的,因为现在有 2 个函数。
【问题讨论】:
-
用
{A::foo(); print("D");}主体实现D::foo() -
无法自动执行此操作,但每个
foo函数可以根据需要调用A::foo()。 -
thx ,这就是我想确认的。
标签: c++ polymorphism