Effective C++ Third Edition 读书笔记 37

本文探讨了C++中重载虚函数时重新定义默认参数值可能导致的问题。由于默认参数值与基类指针类型绑定,这会导致子类中的默认参数值在多态调用时不起作用。

Item 37: Never redefine a function's inherited default parameter value

好久没写读书笔记了,今天先跳到37条吧,这条印象比较深,在C++ Primer、C++编程思想、C++ Programming Language这三本书里居然一时没找到答案,也需是英文版的缘故吧,以后买书没有特殊情况再不能买英文的了,太痛苦了。

言归正传,这条的主要思想是,如果在重载虚函数的时候使用了默认的参数,当使用多态的时候,函数体是动态绑定的,而这个输入参数是静态绑定的,也就是默认参数和基类指针的类型绑定的,所以子类里面定义的默认参数往往是不起作用的。

具体原因是C++实现时的效率和复杂度,貌似《深度探索C++对象模型》里面应该讲了,不过面试的时候还是不要扯这么多,免得曲高和寡,搞得面试官下不来台。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值