C++ 类的学习(四) 继承

cpp 复制代码
class CBox
{
public:
  //继承 数据成员
  double length;
  double width;
  double height;

  //不继承 构造函数(包括复制构造函数)、析构函数、重载赋值运算符(=)
  explicit CBox(double lv = 1.0, double wv = 1.0, double hv = 1.0) : length{ lv }, width{ wv }, height{ hv } {}
  CBox(const CBox& box) {}
  CBox& operator=(const CBox& box) {}

  //继承 其他重载运算符、其他函数成员
  double volume() const
  {
      return length * width * height;
  }
  bool operator < (const CBox& aBox) const
  {
      return this->volume() < aBox.volume();
  }
};



class CCandyBox : CBox //:CBox 表示从CBox继承
{
public:
    //新增的数据成员
    char* contents;

    //不继承  构造函数(包括复制构造函数)、析构函数、重载赋值运算符(=)
    explicit CCandyBox(const char* str = "Candy")               // Constructor
    {
        size_t length{ strlen(str) + 1 };

        contents = new char[length];
        strcpy_s(contents, length, str);
    }

    CCandyBox(const CCandyBox& box) = delete; //= delete 关键字允许开发者显式禁止编译器自动生成某些函数
    CCandyBox& operator=(const CCandyBox& box) = delete;

    ~CCandyBox()                                                // Destructor
    {
        delete[] contents;
    }

    //新增的函数成员
    void boxShow()
    {
        std::cout << contents << std::endl;
    }
};

基类中的private数据成员,派生类中的成员函数不能访问。

只能通过基类的非private函数成员(public、protect)才能访问。

类的protect成员只能被类的成员函数和友元函数访问。

基类的protect成员可以被派生类的函数成员访问。

派生类不继承基类的构造函数、析构函数和赋值运算符,但他们仍存在于基类中。

基类的构造总是先于派生类。


赋值构造函数


禁止派生

相关推荐
MC皮蛋侠客18 分钟前
TDengine C++ 系列(5):C/C++ 连接器——连接管理与查询 API
c语言·c++·tdengine
小弥儿19 分钟前
Firecrawl:把整个网页变成 AI 可查询的数据库
数据库·人工智能·学习
woshihuanglaoshi21 分钟前
鸿蒙老旧项目升级改造高级:API废弃迁移/ArkTS语法升级/架构重构策略/增量迁移/风险管控方案
学习·华为·重构·架构·harmonyos·鸿蒙
MC皮蛋侠客22 分钟前
TDengine C++ 系列(8):流式计算与最新值缓存——库内实时处理
c++·缓存·tdengine
zhangrelay22 分钟前
ROS 2 Lyrical 第2章 ROS 2系统架构与核心概念
linux·笔记·学习·ubuntu·ros2
云空29 分钟前
《软件专业完整学习路线图(本科4年+自学通用版,2026就业向)》
人工智能·科技·学习·计算机·编程·软件
艾莉丝努力练剑38 分钟前
【Qt:问题解决】Qt程序入口点错误修复:MinGW ABI兼容问题
java·服务器·开发语言·qt·文件系统·动静态库
*.✧屠苏隐遥(ノ◕ヮ◕)ノ*.✧9 小时前
C++学习:基础知识的掌握
c++·visualstudio
油丶酸萝卜别吃9 小时前
前端转全栈学习路线
前端·学习
wuyk5559 小时前
第2章:六步换相原理全解+STM32工程实战
c语言·开发语言·stm32·单片机·嵌入式硬件