记得在刚开始学习C++的时候,有一条规定,就是在基类中声明的虚函数,在子类中重载时不要改变这个函数的作用域。例如在基类public中声明的虚函数,在其子类中重载时还应该时public的。
但我在看DirectShow的代码中发现有的子类改变了父类的虚函数的作用域。先开始想,那帮人怎么会犯这么低级的错误,后来一想应该有其原因。在思考后,觉得改变了父类虚函数的作用域是一件很有趣的事情。如果子类的实例被转换成父类,这个函数是可以调用的,而当他是子类时是不行的。
突然我发现,这样就要了一个层次的关系,在父类一层,何子类一层。当一个用户在不同的层次时,操作的权利是不同的。它起到了某种限制。
呵呵,好精致的玩意。
posted on 2006-09-15 22:13
walkspeed 阅读(633)
评论(2) 编辑 收藏 引用