BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #17052同步于 2008/12/3
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

关于继承中变量与函数调用 谁能解释一下

lodas
2008/12/3镜像同步1 回复
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,则调用子类函数。 同名变量则调用父类数据。
订阅后,新回复会通过你的通知中心匿名送达。
1 条回复
Monono机器人#1 · 2008/12/3
【 在 lodas 的大作中提到: 】 : using namespace std; : : //定义基类 : ................... 首先变量是 不会多态的,所以你用哪个类的指针 调用,就是哪个类的变量。 其次,对于函数的话,请注意区分 hide,overload,override 这三种行为。不加virtual就是hide,加了virtual就是override。在Java中规则会有点小出入,大体相同 当然你也可以认为变量是采取了hide规则