C++复习关键点:泛型、内存管理与多态
需积分: 0 60 浏览量
更新于2024-08-04
收藏 44KB DOCX 举报
"C++编程语言复习笔记"
这篇复习记录涵盖了C++编程中的多个核心概念,主要包括函数原型、内存管理、初始化、内联函数、构造函数、常量成员函数、多态性、虚函数机制、友元、抽象类与纯虚函数、继承权限以及模板的使用。
1. **函数原型**:在C++中,函数原型是函数声明的一种形式,它告知编译器函数的返回类型和参数列表,但不包含函数体。函数原型中可以省略参数名称,但类型必须明确。
2. **泛型编程**:C++通过模板支持泛型编程,允许创建适用于多种数据类型的函数或类。如果函数或类需要处理两种或更多类型,可以定义泛型版本,通过参数化类型实现。
3. **内存管理**:C++程序中的内存分为三种主要区域:静态存储区(存储全局变量和静态变量)、栈(存储局部自动变量)和堆(动态内存分配,如`new`操作符使用)。
4. **初始化**:使用`new`关键字动态分配内存,并同时进行初始化,例如`int*pi = new int(6)`。数组初始化如`int*ar = new int[3]{1,2,3}`。
5. **内联函数**:内联函数用于优化代码,减少函数调用的开销,可以将函数体直接写在类中,或者仅声明原型并在实现时加上`inline`关键字。
6. **构造函数**:用于对象创建时初始化成员变量,文中列出了几种不同的构造函数调用方式,包括直接初始化、括号初始化和赋值初始化。
7. **常量成员函数**:在成员函数后面添加`const`关键字,表示该函数不会修改对象的成员值。
8. **多态性**:多态性是面向对象的核心特性之一,通过`virtual`关键字实现。非虚函数的调用依赖于引用或指针的类型,而虚函数则根据实际对象类型选择执行的方法。
9. **虚函数工作原理**:每个含有虚函数的对象都有一个虚函数表,虚函数的地址存储在这个表中,派生类会继承并可能修改这个表。
10. **友元**:友元不是类的成员,因此不能是虚函数。友元函数或友元类可以访问类的私有和保护成员。
11. **抽象类与纯虚函数**:含有纯虚函数(如`virtual void Test() = 0;`)的类是抽象类,不能实例化。纯虚函数声明了一个接口,但没有提供实现。
12. **继承权限**:C++的继承有公有、私有和保护三种,分别对应不同级别的访问控制。
13. **虚基类**:解决菱形继承带来的问题,确保只有一个基类的副本被继承。
14. **类模板**:允许创建通用的类,`template<typename T>`定义模板,`A<int> a;`实例化。默认模板参数如`template<typename T1, typename T2 = int>`。
15. **数组模板**:如`template<class T, int n>`定义,`Tar[n];`创建模板数组。
16. **模板嵌套与模板作为参数**:模板可以嵌套在类中,也可以作为函数参数,如`template<template<typename T> class Thing>`。
17. **模板别名**:使用`typedef`或`using`关键字为模板类型设置别名,简化代码。
18. **友元类**:友元类可以访问另一个类的私有和保护成员,实现两个类之间的紧密协作。
以上是C++编程中的一些基本概念,理解并熟练掌握这些知识点对于编写高效、可靠的C++代码至关重要。
2018-07-13 上传
2023-06-25 上传
2012-03-20 上传
2023-06-30 上传
2019-01-04 上传
2024-01-20 上传
2009-03-04 上传
2021-01-20 上传
2024-04-15 上传
阿玫小酱当当囧
- 粉丝: 18
- 资源: 324
最新资源
- 掌握压缩文件管理:2工作.zip文件使用指南
- 易语言动态版置入代码技术解析
- C语言编程实现电脑系统测试工具开发
- Wireshark 64位:全面网络协议分析器,支持Unix和Windows
- QtSingleApplication: 确保单一实例运行的高效库
- 深入了解Go语言的解析器组合器PARC
- Apycula包安装与使用指南
- AkerAutoSetup安装包使用指南
- Arduino Due实现VR耳机的设计与编程
- DependencySwizzler: Xamarin iOS 库实现故事板 UIViewControllers 依赖注入
- Apycula包发布说明与下载指南
- 创建可拖动交互式图表界面的ampersand-touch-charts
- CMake项目入门:创建简单的C++项目
- AksharaJaana-*.*.*.*安装包说明与下载
- Arduino天气时钟项目:源代码及DHT22库文件解析
- MediaPlayer_server:控制媒体播放器的高级服务器