C/C++编程笔记:C++入门知识丨继承和派生

本文详细介绍了C++中的继承和派生概念,包括单一继承、多重继承、继承的作用,以及不同继承方式下成员的访问权限。讨论了公有、私有和保护派生的特点,并解释了‘isa’和‘has-a’的区别。此外,还提到了作用域分辨符和成员名限定在解决二义性问题中的应用。
摘要由CSDN通过智能技术生成

本篇要学习的内容和知识结构概览

继承和派生的概念

派生

通过特殊化已有的类来建立新类的过程, 叫做”类的派生”, 原有的类叫做”基类”, 新建立的类叫做”派生类”. 从类的成员角度看, 派生类自动地将基类的所有成员作为自己的成员, 这叫做”继承”. 基类和派生类也可以叫做”父类”和”子类”, 也可以叫做”一般类”和”特殊类”.

继承

类的继承是指派生类继承基类的数据成员和成员函数. 继承用来表示类属关系, 不能将继承理解为构成关系

继承派生的作用

(1)增加新的成员(数据成员和成员函数)

(2)重新定义已有的成员函数

(3)改变基类成员的访问权限

单一继承

一般形式:class 派生类名: 访问控制 基类名 { private: 成员声明列表 protected: 成员声明列表 public: 成员声明列表}

"冒号"表示新类是哪个基类的派生类

"访问控制"指继承方式. 三个方式: public, protected, private

派生类的构造函数和析构函数

// 基类
class Point {
    int x;
    int y;
    
    public:
    Point(int a, int b) {
        x = a;
        y = b;
        cout << "init Point" << endl;
    }
    void showPoint() {
        cout << "x = " << x << ", y = " << y << endl;
    }
    ~Point() {
        cout << "delete Point" << endl;
    }
};

// 派生类
class Rect: public Point {
    int w;
    int h;
    
    public:
    // 调用基类的构造函数对基类成员进行初始化
    Rect(int a, int b, int c, int d):Point(a, b) {
        w = c;
        h = d;
        cout << "init Rect" << endl;
    }
    void showRect() {
        cout << "w = " << w << ", h = " << h << endl;
    }
    ~Rect() {
        cout << "delete Rect" << endl;
    }
};

int main() {
    Rect r(3, 4, 5, 6);
    r.showPoint();
    r.showRect();
    
    /** 输出结果
     init Point // 当定义一个派生类的对象时, 首先调用基类的构造函数, 完成对基类成员的初始化
     init Rect // 然后执行派生类的构造函数, 完成对派生类成员的初始化
     x = 3, y = 4 // 调用基类成员函数showPoint();
     w = 5, h = 6 // 调用派生类成员函数showRect();
     delete Rect // 构造函数的执行顺序和构造函数的执行顺序相反, 首先调用派生类的析构函数
     delete Point // 其次调用基类的析构函数
     */
}

类的保护成员

如果希望Rect中的showRect()函数可以一次显示x, y , w, h. 我们直接修改showRect()函数是不行的。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值