《effective C++》:条款37——绝不重新定义继承而来的缺省参数值
2015-08-24 08:33
429 查看
引子:
阿里的一道题:
这里输出的答案是:b~0
在effective C++中,的条款37中说绝不重新定义继承而来的缺省参数值
virtual函数是动态绑定的,而缺省参数值却是静态绑定的。
调用一个定义于derived的虚函数的同时,却可能会使用base为他指定的缺省参数值。
这主要是为了保证运行效率,在编译(前期)的时候就已经给他静态的绑定了声明时的静态类型所给定的值。
阿里的一道题:
#include <IOSTREAM> using namespace std; class A{ public: virtual void func(int val = 0) { cout<<"a~"<<val<<endl; } virtual void test() { func(); } }; class B: public A{ public: virtual void func(int val = 1) { cout<<"b~"<<val<<endl; } }; int main() { B *b = new B(); B c; b->test(); system("pause"); }
这里输出的答案是:b~0
在effective C++中,的条款37中说绝不重新定义继承而来的缺省参数值
virtual函数是动态绑定的,而缺省参数值却是静态绑定的。
调用一个定义于derived的虚函数的同时,却可能会使用base为他指定的缺省参数值。
这主要是为了保证运行效率,在编译(前期)的时候就已经给他静态的绑定了声明时的静态类型所给定的值。
相关文章推荐
- C++中头文件相互包含
- C语言的低级运算
- C++整理1
- C++语言的getline在cl和g++中的不同语义
- C++用多种方式实现Singleton单例模式
- 【C语言】预处理指令—条件编译
- C++: 安装minGW,Msys;对接NeatBeans IDE
- C++正则表达式
- C++ 的那些坑 (Day 2)
- 【C语言】预处理指令—宏定义
- C语言基础--while循环
- C++对象模型——效率有了,弹性呢(第七章)
- C语言基础--switch
- C++中string类的常用函数
- C语言插入排序
- c语言数组方式实现静态循环队列
- C++中struct和class的区别
- Devc++编译系统分配给int多少字节
- C++中的函数指针和函数对象
- C++实现线程池类