#include<iostream>
using namespace std;
class Base
{
public:
virtual void f()
{
this->print(); //为什么此处其知道指向的是派生类对象而非派生类对象的基类部分
}
virtual void print(int i=6)
{
cout<<"Base:"<< i*i <<endl;
}
};
class Derived : public Base
{
public:
virtual void f()
{
this->print(); //
}
virtual void print(int i=10)
{
cout<<"Derived" << i*i<<endl;
}
};
void bar(Base* p)
{
p->print();
p->f();
}
int main()
{
Base * p = new Base;
bar(p);
Derived * q = new Derived();
bar(q);
Base * r = (Base *)new Derived();
bar(r);
system("pause");
return 0;
}
Base:36
Base:36Derived36
Derived100
Derived36
Derived100
请按任意键继续. . .