c++程序设计原理与实践---(3)类的派生和虚函数

来源:互联网 发布:淘宝一元拍卖真的吗 编辑:程序博客网 时间:2024/05/29 02:24

一.派生的几种表示方式

struct Circle:Shape{/*...*/};
默认情况下,struct的成员都是公有的,基类中的公有成员也会成为结构体的公有成员,等价于这个表达:

class Circle:public Shape{public:/*..*/};
但是这样写是完全不同的:

class Circle:Shape{public:/*...*/};

这样写将使shape成为circle的私有基类,circle将不能访问shape的公有函数。

二.覆盖

当希望覆盖一个虚函数时,必须使用与基类完全相同的名字

struct B{    virtual void f() const {cout<<"B::f";}    void g() const { cout<<"B::g";}  //not virtual}struct D:B{    void f() const {cout<<"D::f";} //overrides B::f    void g() {cout << "D::g";}}struct DD:D{    void g() {cout <<"DD:f";}  //doesn't override D::f (not const)    void g() const {cout <<"DD:g";}}void call {const B& b}//a D is a kind of B,so call() can accept a D//a DD is a kind of D,so call() can accept a DD{    b.f();    b.g();}int main(){    B b;    D d;    DD dd;    call(b);    call(d);    call(dd);    b.f();    b.g();    d.f();    d.g();    dd.f();    dd.g();}

将得到的结果:

B::f B::g D::f B::g D::f B::g B::f B::g D::f D::g DD::f DD::g










0 0
原创粉丝点击