摘要: void DisplayOutput(const TPerson& aPerson) { aPerson.Print(); } DisplayOutput()函数的参数是对TPerson类对象的引用。 但是在DisplayOutput中传入TStudent,TTeacher,又会有不同的实现(在TP 阅读全文
posted @ 2017-03-20 11:19 郑哲 阅读(139) 评论(0) 推荐(0) 编辑
摘要: 因为静态绑定的函数,在编译时已明确了所要调用的函数,所要运行时没有决定调用正确函数的开销 动态绑定的开销: C++中都保存了一个类方法的特定表,并在查找正确函数时使用该表。 需要注意的是:找到正确的函数并不涉及链表或表进行任何查找,这是瞬间直接地查找过程。 表中储存了所有方法的地址,调用动态绑定的函 阅读全文
posted @ 2017-03-20 11:14 郑哲 阅读(89) 评论(0) 推荐(0) 编辑
摘要: 动态绑定的支持————虚函数 只有函数前带有virtual的才是虚函数,其他函数不是虚函数 一旦在类中声明成员函数是虚函数,那么它(成员函数)将在所有的子类中保留其动态绑定的性质 例如,Print在TStudent中都是虚函数。 注意:virtual关键字只允许在声明中使用,不允许在成员函数定义中使 阅读全文
posted @ 2017-03-20 11:03 郑哲 阅读(83) 评论(0) 推荐(0) 编辑
摘要: 正常情况下,若基类和派生类中有相同函数,当通过派生类调用时,调用派生类中的实现; 此处的displayOutput函数 void DisplayOutput(const TPerson& aPerson) 根据多态置换原则,调用引用派生类时,依然视作一个aPerson; 所有调用aPerson::p 阅读全文
posted @ 2017-03-20 10:51 郑哲 阅读(97) 评论(0) 推荐(0) 编辑