所以,我有这个多态层次结构:
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
但为空的只有{}
; 也就是说,它是空的,只有在迭代遇到 a 时才可用,ClassC
在这种情况下它被调用,否则它什么也不做。我不能让它是纯的,否则我不能拥有ClassA
.
但是为了确保它ClassC
确实实现了该功能,迫使该类的用户这样做,我在ClassB
.
这可以接受吗?如果我采用非纯虚函数,使其成为纯虚函数,然后再次使其成为非纯虚函数,什么都不会“破坏” ClassC
?