返回信息流using namespace std;
//定义基类
class Base
{
public: int num;
Base()
{
num=2;
}
public:
void Show(){cout<<"Base"<<endl;}
};
//定义派生类
class Derive:public Base
{
public :int num;
Derive()
{
num=3;
}
public:
void Show(){cout<<"Derive"<<endl;}
};
//主函数
int main()
{
Base * bp=new Derive();
cout<<bp->num<<endl;
bp->Show();
return 0;
}
2
Base
父类指针指向子类实例。
如果子类与父类有同名函数,但是函数不加virtual,则调用父类函数。
同名变量则调用父类数据。
using namespace std;
//定义基类
class Base
{
public: int num;
Base()
{
num=2;
}
public:
virtual void Show(){cout<<"Base"<<endl;}
};
//定义派生类
class Derive:public Base
{
public :int num;
Derive()
{
num=3;
}
public:
void Show(){cout<<"Derive"<<endl;}
};
//主函数
int main()
{
Base * bp=new Derive();
cout<<bp->num<<endl;
bp->Show();
return 0;
}
2
Derive
父类指针指向子类实例。
如果子类与父类有同名函数,但是函数加virtual,则调用子类函数。
同名变量则调用父类数据。
这是一条镜像帖。来源:北邮人论坛 / cpp / #17052同步于 2008/12/3
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
关于继承中变量与函数调用 谁能解释一下
lodas
2008/12/3镜像同步1 回复
订阅后,新回复会通过你的通知中心匿名送达。
1 条回复
【 在 lodas 的大作中提到: 】
: using namespace std;
:
: //定义基类
: ...................
首先变量是 不会多态的,所以你用哪个类的指针 调用,就是哪个类的变量。
其次,对于函数的话,请注意区分 hide,overload,override 这三种行为。不加virtual就是hide,加了virtual就是override。在Java中规则会有点小出入,大体相同
当然你也可以认为变量是采取了hide规则