【发布时间】:2013-05-16 10:30:02
【问题描述】:
所以,我有这个多态层次结构:
ClassA
Is not abstract, no pure virtual functions, but a few virtual functions
ClassB:public ClassA
Defines an extended interface for a certain type of subclass;
is abstract with pure virtual functions
ClassC:public ClassB
Usable class, no more subclassing
这就是交易,我会将ClassA 和ClassC 的对象一起放入容器中并进行迭代。为了执行这个迭代,ClassA 中存在一个非纯虚函数,但只有 {} 是空的;也就是说,它是空的,只有在迭代遇到ClassC 时才可用,在这种情况下它会被调用,否则它什么也不做。我不能让它是纯的,否则我不能拥有ClassA 的对象。
但为了确保ClassC 确实实现了该功能,迫使该类的用户这样做,我在ClassB 中将此功能设为纯虚拟。
这可以接受吗?如果我采用非纯虚函数,使其成为纯虚函数,然后在 ClassC 中再次使其成为非纯虚函数,什么都不会“破坏”?
【问题讨论】:
标签: c++ polymorphism virtual