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

学习C++的第七天!

1.虚函数是在基类中用 virtual 关键字声明的函数,可以在派生类中被重写。纯虚函数是在虚函数的基础上,在基类中被初始化为 0 的函数,含有纯虚函数的类是抽象类,不能被实例化。

2.如果基类的析构函数不是虚函数,当通过基类指针删除指向派生类对象的指针时,只会调用基类的析构函数,而不会调用派生类的析构函数,可能导致资源泄漏等问题。有了虚析构函数,在删除指向派生类对象的基类指针时,会先调用派生类的析构函数,再调用基类的析构函数,确保正确释放资源。

3.在 C++中,const 数据成员通常在构造函数初始化列表中进行初始化。而 static 数据成员在类外部进行定义和初始化,且只能初始化一次。初始化 const 数据成员保证其在对象创建后不能被修改;初始化 static 数据成员则为所有对象共享该静态成员提供了正确的初始值。

4. ① 指针是一个变量,存储的是内存地址;引用是一个别名,必须在初始化时绑定到一个对象。 ② 指针可以为空,引用不能为空。 ③指针可以重新赋值指向不同的地址,引用一旦绑定就不能更改指向。

5.① new 是运算符,malloc 是函数。 ② new 在分配内存时会调用构造函数进行初始化,malloc 只是单纯分配内存,不进行初始化。 ③new 失败时会抛出异常,malloc 失败时返回 NULL。 ④ new 返回的是对象类型的指针,malloc 返回的是 void* 类型指针,需要强制转换。

6.内存泄漏是由于程序中动态分配的内存未被正确释放而产生。例如,忘记释放不再使用的指针指向的内存、循环引用等情况都可能导致内存泄漏。 避免内存泄漏的方法有:及时释放不再使用的内存资源;避免循环引用;使用智能指针等工具来自动管理内存。

7.C++内存分区主要包括栈区、堆区、全局区(静态区)、常量区和代码区。栈区由编译器自动分配释放,存放函数参数值、局部变量等;堆区由程序员手动分配和释放,用于动态内存分配;全局区存放全局变量和静态变量;常量区存放常量;代码区存放程序的二进制代码。

9.常用数据结构有数组、链表、栈、队列、树、图等。时间复杂度用于衡量算法运行时间随输入规模的增长速度;空间复杂度衡量算法所需存储空间随输入规模的增长情况。


http://www.kler.cn/a/325057.html

相关文章:

  • go-zero(二) api语法和goctl应用
  • IO技术详解
  • django的model时间怎么转时间戳
  • Nacos 配置中心变更利器:自定义标签灰度
  • ScubaGear:用于评估 Microsoft 365 配置是否存在安全漏洞的开源工具
  • 安全、便捷、效率高,明达边缘计算网关助力制药装备企业远程调机
  • 新建flask项目,配置入口文件,启动项目
  • OceanBase 一级表分区记录
  • 浅谈虚拟内存(操作系统、Redis)
  • matlab中在一个图上持续画多条曲线的方法
  • Qualitor processVariavel.php 未授权命令注入漏洞复现(CVE-2023-47253)
  • [Redis][持久化][上][RDB]详细讲解
  • 每天一个数据分析题(四百九十)- 主成分分析与因子分析
  • 7种限流算法打开新方式
  • Win32打开UWP应用
  • 数据库服务器该如何进行搭建?
  • Kali Linux上安装远程桌面服务VNC
  • 线性代数复习笔记
  • 指针(3)
  • 第18周 第1章Ajax基础知识
  • flutter中InkWell 和 GestureDetector快速、频繁点击时表现出不响应或“点不到”的情况分析
  • 区块链:数据安全与透明的未来触手可及
  • 制造解法 Manufactured Solutions 相关的论文的阅读笔记
  • 安全、稳定、SLA高达99.9%:Azure OpenAI数据分离与隔离优势
  • C语言编写一个五子棋游戏-代码实例讲解与分析
  • 求10 个整数中最大值