C++进阶:域运算符、动态内存与函数重载

需积分: 0 0 下载量 149 浏览量 更新于2024-08-24 收藏 418KB PPT 举报
"本章是C++课件的第三讲,主要涵盖了五个核心知识点:领域运算符、new和delete运算符、重载、name mangling与extern "C"以及带默认参数的函数。这些内容旨在帮助学习者从C语言过渡到C++,深入理解C++的高级特性。 1. **领域运算符**:C++引入了`::`作用域运算符,它用于访问在当前作用域内的全局变量,即使它们的名字与局部变量相同。此外,该运算符也常用于表示类的成员,特别是在类的成员访问中,这是C++面向对象编程的基础。 2. **new和delete运算符**:`new`运算符用于动态分配内存,创建堆上的对象或数组。它返回分配内存的首地址。例如,`int *p; p = new int;` 和 `char *pStr = new char[50];` 分别分配了一个整型和一个字符数组。`delete`运算符则用于释放由`new`分配的内存,防止内存泄漏。其使用形式有 `delete p;` 和 `delete[] pStr;`,分别释放单个对象和数组。 3. **重载**:函数重载是C++中的一个重要特性,允许在同一作用域内定义多个同名但参数列表不同的函数。函数重载依赖于编译器根据实际参数的类型、数量和顺序来选择正确的函数版本。合法的重载包括形参数量、类型或顺序的不同,而返回类型不能作为区分重载的依据。 4. **name mangling与extern "C"**:C++为了支持函数重载,会对函数名进行name mangling,即改变函数的实际名字以便存储类型信息。当需要在C++代码中与C代码混合编程时,可以使用`extern "C"`来告诉编译器按照C的方式处理函数,避免名字改编带来的问题。 5. **带默认参数的函数**:在C++中,函数声明或定义时可以给形参提供默认值,这样在调用时如果没有提供相应的实参,将自动使用默认值。这种方式增强了函数的灵活性,使得函数在不同情况下能有多种调用方式。 总结起来,本章内容是C++学习的关键部分,涉及到内存管理、面向对象的特性以及与C语言的兼容性问题。掌握这些知识点对于深入理解和使用C++至关重要。"