绝不重新定义继承而来的缺省参数值

原创 2013年12月03日 09:31:31
//////////////////////////////////////////////////////////////////////////
// Effective C++. 
// Item 37: Never redefine a function's inherited default parameter value.
// 绝不重新定义继承而来的缺省参数值
class IShape
{
public:
	enum ShapeColor{ Red, Green, Blue };
	virtual void draw(ShapeColor color = Red) const = 0;
};

class CRectangle: public IShape
{
public:
	virtual void draw(ShapeColor color = Green) const
	{
		int a = 0;
		return;
	}
};

int main()
{
	IShape* pRectangle = new CRectangle;
	if (pRectangle)
	{
		// 因为默认参数是静态绑定,所以这里传到CRectangle::draw()里的参数是Red,而不是Green
		pRectangle->draw();
	}
	return 0;
}

条款36、绝不重新定义继承而来的缺省参数值

为简化问题,只能定义两种函数:虚函数和非虚函数。从前面我们知道,重定义继承而来的非虚函数永远是错误的。所以我们讨论“继承一个带有缺省参数值的虚函数”。 理由十分明确:1、虚函数系动态绑定(又称前期绑...
  • lsfreeing
  • lsfreeing
  • 2015年03月17日 10:43
  • 361

条款36、绝不重新定义继承而来的非虚函数

考虑以下代码,D公有派生自B,B有一个成员函数mf. class B { public: void mf(); … }; class D: public B{…}; D x; //D类对象 B...
  • lsfreeing
  • lsfreeing
  • 2015年03月14日 15:39
  • 411

绝不重新定义继承而来的缺省参数值

在effective C++ 条款37:绝不重新定义继承而来的缺省参数值 #include "iostream" using namespace std; class base{ public: ...
  • zhongkeli
  • zhongkeli
  • 2013年10月31日 09:10
  • 1194

绝不重新定义继承而来的缺省参数值!

子类对象调用父类的函数,但是父类函数中再次要求调用父类和子类都实现了得虚函数,那么这个时候调用的是?答案是: 记住:virtual 函数是动态绑定,而缺省参数值却是静态绑定。 意思是你可能会 在“...
  • qq_33826977
  • qq_33826977
  • 2017年03月28日 23:00
  • 81

绝不重新定义继承而来的函数的缺省参数值

首先,此处的函数指的是 virtual 函数,为什么不是non-virtual函数呢?是因为在public继承中,non-virtual函数表示派生类是需要继承其接口与其强制实现的。如果你的Deriv...
  • C12345SDN
  • C12345SDN
  • 2014年06月24日 20:11
  • 1125

条款37:绝不重新定义继承而来的缺省参数值

条款37:绝不重新定义继承而来的缺省参数值内容:     审视了一下条款以后,我们可以换一种说法:绝不重新定义继承而来的virtual函数或non-virtual函数的缺省参数值.而在上一款中我们提到...
  • scofieldzhu
  • scofieldzhu
  • 2009年08月04日 15:22
  • 1715

Effective C++:绝不重新定义继承而来的缺省参数值

考虑下面这段程序: #include using namespace std; class Shape { public: enum ShapeColor { Red, Green, B...
  • optcaelum
  • optcaelum
  • 2016年07月16日 16:20
  • 198

Item 37:绝不重新定义继承而来的缺省参数值

Item 37:绝不重新定义继承而来的缺省参数值
  • onlyshi
  • onlyshi
  • 2016年04月08日 10:01
  • 930

不要重新定义继承而来的缺省参数值

–effective c++ item 37首先,简化一下问题.你只能继承两种函数:virtual 和 non-virtual 函数 .而重新定义一个继承而来的non-virtual函数永远是错误的....
  • sinat_37806635
  • sinat_37806635
  • 2017年07月21日 14:46
  • 170

不重新定义继承而来的缺省参数值

你只能继承两种函数;virtual函数和non-virtual函数。然而重新定义一个继承而来的non-virtual函数是不应该的,所以我们不考虑重新定义一个继承而来的non-virtual函数,只讨...
  • sinat_30071459
  • sinat_30071459
  • 2016年01月23日 12:29
  • 467
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:绝不重新定义继承而来的缺省参数值
举报原因:
原因补充:

(最多只允许输入30个字)