c++,父类引用指向子类对象,虚函数

来源:互联网 发布:delphi 车牌识别算法 编辑:程序博客网 时间:2024/06/15 10:32

c++有父类引用指向子类对象(面向对象的重要特点之一,java里是这样的!)

#include<iostream.h>class Father{public:Father(){f = 1;}void print(){cout<<"f = "<<f<<endl;}public:int f;};

#include<iostream.h>#include "Father.cpp"class Son : public Father{public:Son():Father(){s = 2;}void print(){cout<<"s = "<<s<<endl;}public:int s;};int main(){Son s;s.print();//输出s = 2Father& f = s;//这里如果直接用值,就是把“&”去掉,即使使用virtual也不会调用子类的方法,原因待解!f.print();//输出父类 f=1f = s;//父类引用指向子类对象f.print();//这里输出 f = 1;和java不一样,java里面则直接调用子类的方法,但是这里不是,这里调用的还是父类的,要让其自动调用子类的方法则需要将方法设置为虚函数,加关键字virtual        ((Son&)f).print();//强制转换,输出 s = 2  return 0;}
0 0