#include <iostream>
class Base{
private:
int number_;
public:
Base()=default;
virtual void set_data(const int& n_ = 999);
virtual ~Base()=default;
};
void Base::set_data(const int& n_)
{
std::cout<<"n_: "<<n_<<std::endl;
this->number_ = n_;
}
class Derived : public Base{
private:
int num_;
public:
Derived() = default;
virtual void set_data(const int& nu_ = 888);
~Derived() = default;
};
void Derived::set_data(const int& nu_)
{
this->num_ = nu_;
std::cout<<"num_ "<<this->num_<<std::endl;
}
int main()
{
Base b1;
Derived d1;
d1.set_data(); //ok. num_ = 888.
Base* b2 = &d1;
b2->set_data(); // num_ = 999.
//我们可以看出来在动态绑定的时候默认参数,用的还是基类中的!!!!!!!!!!!
return 0;
}
虚函数是动态绑定,而参数却是静态绑定.