(转)绝对不要重新定义继承而来的缺省参数
2010-10-09 09:06
363 查看
看下面这个例子:
class CBase
{
public:
virtual void Test(int iTest = 0) const = 0;
};
class CDerived : public CBase
{
public:
void Test(int iTest = 1) const { cout << iTest << endl; };
};
下面是调用例子:
CBase *p = new CDerived;
p->Test();
我们的本意是想输出1,可是结果却是输出0!
不用惊奇,书中给出了答案:虚拟函数系动态绑定(dynamically bound),而缺省参数值却是静态绑定(statically )所以,<<Effective C++>>第38条告诉我们: 绝对不要重新定义继承而来的缺省参数。
class CBase
{
public:
virtual void Test(int iTest = 0) const = 0;
};
class CDerived : public CBase
{
public:
void Test(int iTest = 1) const { cout << iTest << endl; };
};
下面是调用例子:
CBase *p = new CDerived;
p->Test();
我们的本意是想输出1,可是结果却是输出0!
不用惊奇,书中给出了答案:虚拟函数系动态绑定(dynamically bound),而缺省参数值却是静态绑定(statically )所以,<<Effective C++>>第38条告诉我们: 绝对不要重新定义继承而来的缺省参数。
相关文章推荐
- 绝对不要重新定义继承而来的缺省参数
- 绝不重新定义继承而来的缺省参数——effective c++学习笔记
- 绝对不要重新定义继承而来的non-virtual函数(Effective C++_36)
- 《Effective C++》Rule 37: 绝不重新定义继承而来的缺省的参数值
- 读书笔记 effective c++ Item 37 永远不要重新定义继承而来的函数默认参数值
- 条款36:绝对不要重新定义,继承而来的non-virtual函数
- 条款36:绝对不要重新定义继承而来的non-virtual函数
- 继承的虚函数缺省参数值不要重新定义的原因
- 条款36:绝对不要重新定义继承而来的non-virtual函数
- 决不要重新定义继承而来的非虚函数
- Effective C++: 绝对不要重定义一个继承而来的非虚函数.
- 不要重新定义继承而来的缺省参数值
- 读书笔记 effective c++ Item 36 永远不要重新定义继承而来的非虚函数
- 条款 37: 决不要重新定义继承而来的非虚函数
- c++:不要重新定义继承而来的non-virtual函数
- 决不要重新定义继承而来的非虚函数
- Effective C++读书笔记一 条款36 绝对不要重新定义public继承来的non-virtual函数
- 不要重新定义继承而来的缺省参数值
- 条款38: 决不要重新定义继承而来的缺省参数值(有味道的一条)
- C++ 绝不要重新定义继承而来的缺省参数值