C++ 类的继承与派生(二)私有继承

注意:本文中代码均使用 Qt 开发编译环境
私有继承(private)
(1)基类的public和protected成员都以private身份出现在派生类中,但基类的private成员不可访问
(2)派生类中的成员函数可以直接访问基类中的public和protected成员,但不能访问基类的private成员
(3)通过派生类的对象不能访问基类的任何成员

例如:私有继承举例

#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:private  Point {
public:
    void initR(float x, float y, float w, float h){
        initP(x,y);
        W=w;
        H=h;
    }

    void move(float xOff,float yOff){
        Point::move(xOff,yOff);//访问基类私有成员
    }

    float getX(){
        return Point::getX();
    }

    float getY(){
        return Point::getY();
    }

    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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 注意:本文中代码均使用 Qt 开发编译环境类的继承与派生?以原有的类为基础产生新的类,我们就说新类继承了原有类的特...
    赵者也阅读 1,499评论 0 1
  • C++文件 例:从文件income. in中读入收入直到文件结束,并将收入和税金输出到文件tax. out。 检查...
    SeanC52111阅读 2,866评论 0 3
  • 一、继承和多态在面向对象编程中,继承(也称为派生)让您能够创建新类,而这些类继承了父类(也称为基类)的特征和行为。...
    CarlDonitz阅读 860评论 0 2
  • 政界水是浑,金融界那只更浑,天地间本就混沌,不怕浑,会游泳会飞就行![奸笑][奸笑][奸笑] 一入豪门深似海[奸笑...
    纵情嬉戏天地间阅读 370评论 0 0
  • 二十几岁的我们幻想用工作来错过一生 这段时间,我在拼命地跑招聘会,像是抓住了份工作就抓住了人生。在HR挑剔我们的时...
    思依阅读 173评论 1 0