缺省參數值是靜態綁定的

class A
{
public:
	virtual void func(int val=1)
	{
		std::cout<<"A->"<<val<<std:endl;
	}
	virtual void test()
	{
		func();
	}
};
class B : public A
{
public:
	void func(int val=0)
	{
		std::cout<<"B->"<<val<<std::endl;
	}
};
int main()
{
	A *p1=new B;
	B *p2=new B;
	p1->func();	//B->1
	p1->text();	//B->1
	p2->func();	//B->0
	<strong>p2->text();	//B->1(雖然p2的靜態類型是B*,但是調用text()後,用A*調用func())</strong>
	return 0;
}


重點:缺省參數值是靜態綁定的,絕不重新定義繼承而來的缺省參數值。






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章