#include using namespace std; class base { public: virtual int foo( int ival = 1024 ) { cout << "base::foo() -- ival: " << ival << endl; return ival; } // ... }; class derived : public base { public: int foo( int ival = 2048 ) { cout << "derived::foo() -- ival: " << ival << endl; return ival; } // ... }; //====================================================================== // 证明了一点,virtual带缺省参数时,缺省参数和指针或引用对象类型绑定 // 也就是说基类指针或引用调用的是派生类中的函数,但是缺省参数是从基类 // 继承了过来,而派生类指针或引用调用的是自身的虚函数,缺省参数是本身的 //====================================================================== int main() { derived obj; derived *pd = &obj; //new derived; base *pb = pd; int val = pb->foo(); cout << "main() : val through base: " << val << endl; val = pd->foo(); cout << "main() : val through derived: " << val << endl; return 0; }
缺省参数的virtual继承方式
最新推荐文章于 2023-04-25 19:27:26 发布