假设我有一个类parent
,继承的类是child1
、child2
和child3
,都继承了parent
的函数TellName
,我想知道有没有办法调用类的父类的TellName
函数,自动运行child1
、child2
和child3
的所有函数。
- 可视化:*
class parent
{
public:
virtual void TellName() { }
};
class child1 : public parent
{
public:
void TellName() override { std::cout<<"Child1"<<"\n"; }
};
class child2 : public parent
{
public:
void TellName() override { std::cout<<"Child2"<<"\n"; }
};
class child3 : public parent
{
public:
void TellName() override { std::cout<<"Child3"<<"\n"; }
};
- 现在我想运行
parent
的TellName
函数,并获得如下输出:*
>> Child1
>> Child2
>> Child3
我假设通过使用函数TellName
的VTable是可能的。希望我的问题是清楚的。
1条答案
按热度按时间8xiog9wr1#
使用虚函数来完成你所要做的事情的唯一标准方法是示例化所有类型的对象,并在它们上面调用
TellName()
函数,例如:或者,既然你让
TellName()
函数virtual
,你可以把所有这些对象放在一个容器中,并通过从parent
的指针调用TellName()
来打印名称。但是,如果你想打印这些名字而不示例化子对象,那么你不需要也不应该使用
virtual
函数,相反你可以使用static
函数。