C++学习:重载new和delete操作符
需积分: 48 48 浏览量
更新于2024-08-19
收藏 17.46MB PPT 举报
"这篇文件是关于C++学习的笔记,主要讨论了如何重载`new`和`delete`操作符,以及C++的一些基础知识,包括C++的发展历史、特点和行业地位。"
在C++中,`new`和`delete`是用于动态内存分配和释放的关键字。当我们需要在运行时创建对象或者分配一大块内存时,通常会用到它们。然而,C++允许我们根据特定需求重载这两个操作符,以便自定义内存管理行为。
**重载new操作符**
重载`new`操作符是为了提供自定义的内存分配机制。当你定义一个类并重载`new`时,你可以改变对象或数组的默认分配方式。重载`new`的基本形式如下:
```cpp
void* MyClass::operator new(size_t size, [arg_list]) {
// 自定义内存分配逻辑
}
```
这里,`size_t`参数表示要分配的字节数,而`arg_list`可以包含任何额外的参数,用于传递给自定义的内存分配函数。返回值为`void*`,因为`new`操作符应该返回一个可以存储任何类型的指针。
**重载delete操作符**
同样,`delete`也可以被重载,用于自定义内存释放的行为。这通常与重载`new`一起使用,以确保内存被正确地清理。重载`delete`的形式如下:
```cpp
void MyClass::operator delete(void* ptr, [arg_list]) {
// 自定义内存释放逻辑
}
```
`ptr`参数是通过`new`操作符分配的内存的地址,`arg_list`是可选的参数,与`new`操作符中的参数相对应。
**C++概述**
C++是由比雅尼·斯特劳斯特鲁普博士在1979年开发的,最初名为"C with Classes",后来演变成C++。1998年,C++成为ANSI/ISO标准,并发布了经典著作《The C++ Programming Language》的第三版。C++是一种通用的、面向对象的编程语言,它不仅扩展了C语言的功能,还引入了数据抽象、面向对象编程和泛型编程的概念。
C++经历了三个发展阶段,从最初的传统面向对象语言,到添加泛型编程(如STL和Boost库),再到现在的模板元编程(如Loki和MPL)。C++广泛应用于嵌入式系统、游戏编程、网络编程和系统编程等领域,具有很高的行业地位。
理解如何重载`new`和`delete`是深入学习C++内存管理的关键,而掌握C++的历史和特性则有助于我们更好地理解和运用这种强大的编程语言。
382 浏览量
259 浏览量
2007-10-08 上传
101 浏览量
129 浏览量
125 浏览量
2010-03-18 上传
2009-07-25 上传
382 浏览量
清风杏田家居
- 粉丝: 22
- 资源: 2万+
最新资源
- HUMmer-开源
- README-Generator
- 自定义基于接口,实体类注解脱敏
- XYCMS留言板 v7.4
- flutter-rechargeApp-md5-674a298f5659de080bb22ea002de4fbf
- RRT轨迹规划算法matlab程序
- calculator
- 在Rust中从头开始克隆SQLite-Rust开发
- Tnotes_app:任务和笔记Flutter应用
- 计算机辅助几何设计与非均匀有理B样条 修订版 实例 教程 软件
- 基于JAVASwing的贪食蛇小游戏 键盘事件监听 多线程 文件IO 自取
- js-programming-assignment-1-APozin558:教室为GitHub创建的js-programming-assignment-1-APozin558
- Download Accelerator Plus v10.0.0.6 Alpha
- PDS-Movie-Competition
- SilexStarter-GanttModule
- ta-技术分析库。 实施指标数量:EMA,SMA,RSI,MACD,随机指标等-Rust开发