C++ 学习记录

文章目录

继承

  • 继承顾名思义就是对长辈本有的东西进行获取与使用,即两个以及两个类以上的关系
  • 在获取与使用时会存在一些情况:
    • public:长辈对外公开的自身所有物,最终都会是后代的
    • protected:受保护的自身所有物,最终也是后代的,但外人不知道
    • private:长辈私人所有的隐私物,不想让任何人知道和获取,所以后代以及其他人都不可知
  • 长辈与后代必须有严格先后,长辈的下一代不能是长辈的下一代的下一代,即兄弟关系不能变成父子关系。用程序语言来说,子类继承时,不能继承和自己平级的类,如下例子 [1]:
cpp 复制代码
class Shape
{
protected:
	float width_;
	float height_;
};

// 错误情况,在当前例子中,Rectangle类将会同时继承Shape和PaintCost两类
// 这样会导致无法区分所继承的成员变量是由哪一类传递来的
// class PaintCost: public Shape
// {
// };

// 正确情况
class PaintCost
{
};


class Rectangle : public Shape, public PaintCost
{
	public:
        int getArea()
        {
        	// 如果使用错误情况,此时无法明确width_和height_是继承自哪里
        	// 因为PaintCost类也继承了Shape类,所以也有width_和height_变量
            return (width_ * height_);
        }
};

重载和重写

区别

重载 重写
范围 同一类 不同类(基类与派生类之间,即多态概念)
声明样式 函数名相同,参数不同 函数名和参数都相同
关键字 可忽略不写 基类必须带有 virtual 关键字

重载

重写

参考文献

1\] https://www.w3cschool.cn/cpp/cpp-inheritance.html

相关推荐
Humbunklung30 分钟前
VC++ 使用OpenSSL创建RSA密钥PEM文件
开发语言·c++·openssl
Humbunklung31 分钟前
填坑:VC++ 采用OpenSSL 3.0接口方式生成RSA密钥
开发语言·c++·rsa·openssl 3.0
Larry_Yanan31 分钟前
QML学习笔记(十五)QML的信号处理器(MouseArea)
c++·笔记·qt·学习·ui
努力学习的小廉2 小时前
我爱学算法之—— 模拟(下)
c++·算法
Larry_Yanan2 小时前
QML学习笔记(十七)QML的属性变更信号
javascript·c++·笔记·qt·学习·ui
eqwaak03 小时前
Flask实战指南:从基础到高阶的完整开发流程
开发语言·后端·python·学习·flask
GilgameshJSS3 小时前
STM32H743-ARM例程9-IWDG看门狗
c语言·arm开发·stm32·单片机·嵌入式硬件·学习
hsjkdhs3 小时前
C++之拷贝构造(浅拷贝与深拷贝)、this指针、内联函数
c++
默|笙3 小时前
【c++】红黑树的部分实现
开发语言·c++
轩情吖4 小时前
Qt常用控件之QSpinBox
开发语言·c++·qt·控件·桌面级开发·qspinbox·微调框