做了一个虚函数的例子。在父函数中指定了print是虚函数,那么父类就可以调用子类的print方法。
答案是:
A::construct
B::construct
This is B
B::destroy
A::destroy
请按任意键继续. . .
注意:
1,2,用指针或者引用将B传个A,虚函数生效。3直接值传递,不生效。
#include <iostream>
using namespace std;
class A
{
public:
A()
{
cout<<"A::construct"<<endl;
}
virtual ~A()
{
cout<<"A::destroy"<<endl;
}
virtual void print()
{
cout<<"This is A"<<endl;
}
};
class B : public A
{
public:
B()
{
cout<<"B::construct"<<endl;
}
~B()
{
cout<<"B::destroy"<<endl;
}
void print()
{
cout<<"This is B"<<endl;
}
};
void main()
{
//A a;
//a.print();
//B b;
//b.print();
//B b;
//A *a; ---》调用B中的print (1)
//a = &b;
//a->print();
B b;
A &a = b; //---》调用B中的print (2)
a.print();
//B b;
//A a; ->>虚函数不会调用B中的print (3)
//a = b;
//a.print();
}
答案是:
A::construct
B::construct
This is B
B::destroy
A::destroy
请按任意键继续. . .
注意:
1,2,用指针或者引用将B传个A,虚函数生效。3直接值传递,不生效。
#include <iostream>
using namespace std;
class A
{
public:
A()
{
cout<<"A::construct"<<endl;
}
virtual ~A()
{
cout<<"A::destroy"<<endl;
}
virtual void print()
{
cout<<"This is A"<<endl;
}
};
class B : public A
{
public:
B()
{
cout<<"B::construct"<<endl;
}
~B()
{
cout<<"B::destroy"<<endl;
}
void print()
{
cout<<"This is B"<<endl;
}
};
void main()
{
//A a;
//a.print();
//B b;
//b.print();
//B b;
//A *a; ---》调用B中的print (1)
//a = &b;
//a->print();
B b;
A &a = b; //---》调用B中的print (2)
a.print();
//B b;
//A a; ->>虚函数不会调用B中的print (3)
//a = b;
//a.print();
}