[c++] 虛函數的默認參數問題

虛函數可以有默認實參,但是,即便派生類有自己的默認實參,在使用使用基類指針調用時還是會
使用基類的默認實參。反之,如果使用派生類指針調用,則會使用派生類的默認實參(當然這就不
設計多態了,因爲調用指針/引用是派生類,而不是基類)。

.

class A{
public:
	A()=default;
	virtual ~A()=default;
public:
	virtual void func(int i = 10){
		printf("A = %d\n",i);
	}
};

class B :public A{
public:
	B()=default;
public:
	void func(int i = 20){
		printf("B=%d\n", i);
	}
};

int _tmain(int argc, _TCHAR* argv[])
{
	A a1;
	B b1;

	A* p1 = &b1;
	B* p2 = &b1;

	p1->func();		//10
	p2->func();	    //20

	getchar();
	return 0;
}

 

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