当前位置: 首页 > news >正文

C++基础编程的学习3

nullptr关键字

在C++11之前,空指针通常用NULL0表示。然而,这些表示方法存在类型安全问题。C++11引入了nullptr关键字,它提供了一个明确的、类型安全的空指针值。

Lambda表达式

Lambda表达式是C++11引入的一种便捷的匿名函数定义方式。当Lambda表达式没有捕获外部变量时,它可以被用作函数指针。Lambda表达式提供了一种快速定义函数对象的方法,特别是在需要临时使用的小函数时。

没捕获的情况下,这个表达式可以充当函数的指针

函数指针举例:

内存管理

C++提供了两种内存分配方式:newmalloc,以及它们的释放方式:deletefree

  • new会自动调用对象的构造函数,而malloc不会。
  • 相对地,delete会调用对象的析构函数,而free不会。
  • 使用malloc分配的内存需要强制类型转换,而new不需要。
  • mallocfree是C语言中的函数,而newdelete是C++的关键字。

类和继承

类是C++中实现封装和数据抽象的基本单位。继承是类与类之间的一种关系,它允许一个类(派生类)继承另一个类(基类)的属性和方法。

继承类型

  • 单继承:派生类只继承一个基类。

  • 多继承:派生类可以继承多个基类。尽管多继承提供了更大的灵活性,但通常推荐使用单继承,以避免复杂的继承关系带来的问题。

Base是直接基类

Base0是间接基类

派生类的生成过程

  1. 吸收基类成员:派生类自动拥有来自基类的所有属性和方法,但不包括构造函数和析构函数。
  2. 改造基类成员:如果派生类中有与基类同名的成员或方法,基类的相应成员或方法会被隐藏。这种情况下,如果尝试访问被隐藏的基类成员,将会导致编译错误。

这个情况下基类的fn会被隐藏

这样使用将会报错基类fn函数被隐藏了只有派生类的

这个情况是隐藏并不是重载

重载是要在同一作用域下

这个时候派生类字节大小为4

这个时候则为8

但是调用的时候是调用派生类的

  3.添加基类成员:派生类可以添加新的成员或方法,以扩展基类的功能。

类型兼容规则

类型兼容规则指出,在需要基类对象的任何地方,都可以使用公有派生类的对象来替代。这意味着一个派生类对象可以隐含地转换为基类对象。然而,需要注意的是,这种转换遵循的是静态类型转换,调用的将是基类的成员函数。

这个时候调用的是基类的fn

http://www.lryc.cn/news/419063.html

相关文章:

  • Java中的Optional类:解锁优雅编程的秘密
  • 聆思CSK6大模型开发板语音控制风扇(上)
  • 代码随想录算法训练营第四十一天 | 121. 买卖股票的最佳时机、122. 买卖股票的最佳时机II、123. 买卖股票的最佳时机III
  • 延时队列与redis and rabbitmq
  • 数据结构--单链
  • 春秋云镜CVE-2023-38836
  • Linux 进程概念
  • 【秋招突围】2024届校招-米哈游笔试题-第二套
  • tklog v0.0.9 :Rust灵活高效日志管理
  • 长安链java-sdk打成jar包部署找不到配置文件,springBoot项目制作Docker镜像
  • AI问答:理解软件开发中的几个概念 / 软件逆向、加密、加固、脱壳、反编译
  • 第十一届MathorCup高校数学建模挑战赛-C题:基于有限差分法的散热机理建模与海底数据中心优化设计
  • 【java】常量
  • react如何使用useContext + TS 自定义hooks
  • 【网络安全学习】SQL注入03:如何防止SQL注入
  • linux利用crontab捕获iotop
  • android13 关闭selinux 临时关闭或者永久关闭
  • JetBrains GoLand单元测试不支持单个单元测试case执行
  • 基于STM32设计的盆栽种植自动管理系统(微信小程序)(201)
  • 白骑士的PyCharm教学实战项目篇 4.1 Web应用开发
  • Linux与Docker常用运维命令一览
  • 怎样在 SQL 中创建视图(VIEW),以及视图的作用和优势是什么?
  • Tomcat 使用和配置文件(详解)
  • html+css+js+jquery实现一个 飘零的树叶
  • 鸿蒙(API 12 Beta3版)【时域可分层视频编码】 音视频编码
  • 一个java类实现UDP代理转发
  • K8s问题案例分析
  • 爬虫集群部署:Gerapy 框架详细解析
  • 文本相似度 HanPL汉语言处理
  • Linux软件包管理器 yum