您的位置:首页 > 编程语言 > C语言/C++

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

2016-07-12 22:26 225 查看


#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 = 2
Father& f = s;//这里如果直接用值,就是把“&”去掉,即使使用virtual也不会调用子类的方法,原因待解!
f.print();//输出父类 f=1

f = s;//父类引用指向子类对象

f.print();//这里输出 f = 1;和java不一样,java里面则直接调用子类的方法,但是这里不是,这里调用的还是父类的,要让其自动调用子类的方法则需要将方法设置为虚函数,加关键字virtual
        ((Son&)f).print();//强制转换,输出 s = 2

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C++