美文网首页C++ 杂记
C++ 类的继承与派生(一)公有继承

C++ 类的继承与派生(一)公有继承

作者: 赵者也 | 来源:发表于2017-01-06 21:52 被阅读29次

    注意:本文中代码均使用 Qt 开发编译环境
    一、类的继承与派生
    (1)保持已有类特性构造新类过程称为继承
    (2)在已有类的基础上新增自己的特性产生新类过程叫做派生
    (3)被继承已有类叫做基类
    (4)派生出的新类称为派生类
    二、继承与派生的目的
    (1)继承的目的:实现代码重用
    (2)派生的目的:当新的问题出现,原有程序无法(或不能完全)解决时,需要对原有程序进行改造

    派生类的声明形式:

    class 派生类名: 继承方式 基类名
    {
           成员声明;
    }
    

    继承方式:不同的继承方式的影响主要体现在:
    (1)派生类成员对基类成员的访问控制
    (2)派生类对象对积累成员的访问控制

    三种继承方式:<1>公有继承 public <2>私有继承 private <3>保护继承 protected

    公有继承(public)
    (1)基类的public和protected成员的访问属性在派生类保持不变,但基类的private成员不可访问
    (2)派生类中的成员函数可以直接访问基类中的public和protected成员,但不能访问基类的private成员
    (3)通过派生类的对象只能访问基类的public成员

    例如:公有继承举例

    #include <QCoreApplication>
    #include <QDebug>
    
    class Point {
    public:
        void initP(float xx=0,float yy=0){
            X = xx;
            Y = yy;
        }
    
        void move(float xOff,float yOff){
            X += xOff;
            Y += yOff;
        }
    
        float getX(){
            return X;
        }
    
        float getY(){
            return Y;
        }
    
    private:
        float X,Y;
    };
    
    
    
    class Rectangle:public Point {
    public:
        void initR(float x, float y, float w, float h){
            initP(x,y);
            W=w;
            H=h;
        }
    
        float getH(){
            return H;
        }
    
        float getW(){
            return W;
        }
    
    private:
        float W,H;
    };
    
    int main(int argc, char *argv[])
    {
        QCoreApplication a(argc, argv);
    
        Rectangle rect;
        rect.initR(2,3,20,10);
        rect.move(3,2);
    
        qDebug() << rect.getX() << "," << rect.getY() << ","
                 << rect.getW() << "," << rect.getH();
    
        return a.exec();
    }
    

    运行结果:
    5 , 5 , 20 , 10

    相关文章

      网友评论

        本文标题:C++ 类的继承与派生(一)公有继承

        本文链接:https://www.haomeiwen.com/subject/ttpxbttx.html