C++继承

C++继承,第1张

概述继承的概念 继承是指,我们可以使用一个类来定义另一个类,在创建这个类时,我们就不需要重新编写数据成员与成员函数,这可以大大方便我们编写代码和维护代码的效率。当我们使用一个类来定义另一个类时,前者就称为基类,后者就称为派生类。保持已有类的特性而构成新类的过程称为继承,在已有类的基础上新增自己的特性而产生新类的过程称为派生。被继承的已有类成为基类(父类)base class,派生出的新类称为派生类(子 继承的概念

继承是指,我们可以使用一个类来定义另一个类,在创建这个类时,我们就不需要重新编写数据成员与成员函数,这可以大大方便我们编写代码和维护代码的效率。当我们使用一个类来定义另一个类时,前者就称为基类,后者就称为派生类。保持已有类的特性而构成新类的过程称为继承,在已有类的基础上新增自己的特性而产生新类的过程称为派生。被继承的已有类成为基类(父类)base class,派生出的新类称为派生类(子类)derived class。直接参与派生出某类的基类成为直接基类,基类的基类甚至更高层的基类称为间接基类。
继承的目的:实现设计与代码的重用,充分利用原有的类
派生的目的:当新的问题出现,原有程序无法解决,需要对原有程序进行改造

单继承时派生类的定义: class 派生类名:继承方式 基类名{? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 成员声明;????????????????????????????????? ?        }

例子:

class Derived: public Base{public:    Derived();    ~Derived();};
多继承时派生类的定义:?  class 派生类名:继承方式1 基类名1, 继承方式2 基类名2, 。。。。。? {  成员声明;};

例子:

class Derived: public Base1,private Base 2{public:    Derived();    ~Derived();};
派生类的构成:

吸收基类的成员,(默认情况下,派生类包含全部基类中除了构造函数之外的所有成员,C++11规定可以使用using语句继承基类构造函数)
改造基类成员,(如果派生类中声明了一个和某基类成员同名的新成员, 派生的新成员就隐藏或覆盖了外层同名成员)
添加新的成员

继承方式简介:

三种继承方式:
公有(public ),基类的共有成员和保护成员的访问属性在派生类中不变,而基类的私有成员不可直接访问。
私有(private),基类中的公有成员和保护成员都以私有成员的身份出现在派生类中,而基类的私有成员在派生类中不可直接访问。
保护继承(protected),基类中的公有成员和保护成员都以保护成员的身份出现在派生类中,而基类的私有成员不可直接访问。
例子:

#include <iostream>using namespace std;class Shape {public:    Shape(){wIDth = 0,height = 1;};    voID init(double w,double h){        wIDth = w;        height = h;    }    double get_w(){return wIDth;}    double get_h(){return height;}    frIEnd class Retangle;private:    double wIDth;    double height;};class Rectangle: public Shape{public:    Rectangle(double xx,double yy,double w,double h){        init(w,h);        x = xx;        y = yy;    }    voID move(int px,int py){x-=px,y-=py;}    double get_x(){return x;}    double get_y(){return y;}private:    double x,y;};int main(voID){    Rectangle rect(1,2,3,4);    cout<<rect.get_x()<<" "<<rect.get_y()<<" "<<rect.get_w()<<" "<<rect.get_h()<<endl;    int xx,yy;    cin>>xx>>yy;    rect.move(xx,yy);    cout<<rect.get_x()<<" "<<rect.get_y()<<" "<<rect.get_w()<<" "<<rect.get_h()<<endl;    return 0;}

结果

1 2 3 40 0 //键盘输入1 2 3 4

截图

总结

以上是内存溢出为你收集整理的C++继承全部内容,希望文章能够帮你解决C++继承所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1210538.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存