C++学习:重载new和delete操作符

需积分: 48 1 下载量 31 浏览量 更新于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++的历史和特性则有助于我们更好地理解和运用这种强大的编程语言。