- 0
- 0
- 约2.98千字
- 约 8页
- 2026-01-25 发布于重庆
- 举报
C++期末复习重点及常见错误汇编
C++作为一门高效且功能强大的编程语言,其语法特性与编程范式兼具灵活性与复杂性。期末复习不仅需巩固核心知识点,更要洞察常见错误陷阱,方能在实践与应试中得心应手。本文将系统梳理复习重点,并针对典型错误进行深度剖析,助力高效备考。
一、复习重点梳理
(一)基础语法与数据类型
1.变量与常量
变量声明与初始化的规范,区分`const`常量与`constexpr`常量表达式的使用场景。
作用域与生命周期:全局变量、局部变量、静态局部变量的特性及注意事项。
2.数据类型
基本类型:整数型(含符号与无符号)、浮点型(精度与范围)、字符型(`char`与宽字符)。
复合类型:数组(维度、初始化列表)、指针(野指针、空指针`nullptr`)、引用(别名特性,不可更改指向)。
类型推导:`auto`关键字的使用规则,`decltype`的类型推断逻辑。
3.运算符与表达式
优先级与结合性:重点关注逻辑运算符(短路特性)、自增自减(前置/后置区别)、三目运算符。
类型转换:隐式转换的风险(如窄化转换),显式转换(`static_cast`、`const_cast`等,避免滥用)。
4.控制流语句
分支结构:`if-else`嵌套逻辑,`switch-case`中`break`的必要性,`default`的合理使用。
循环结构:`for`(含C++11范围for)、`while`、`do-while`的适用场景,循环控制(`break`与`continue`的区别)。
5.函数
定义与声明:参数列表(值传递、引用传递、指针传递的区别),返回值类型(避免返回局部变量引用/指针)。
函数重载:参数数量、类型、顺序的差异化要求,返回值不可作为重载依据。
内联函数:`inline`的作用(减少调用开销)与限制(避免复杂逻辑)。
(二)面向对象编程核心
1.类与对象
类的封装:访问控制符(`public`/`private`/`protected`)的意义,成员函数与数据成员的组织。
对象创建:栈对象与堆对象(`new`/`delete`)的生命周期管理。
2.构造函数与析构函数
构造函数:默认构造函数(编译器自动生成的条件)、带参构造函数、拷贝构造函数(深拷贝vs浅拷贝,尤其含指针成员时)。
析构函数:资源释放(动态内存、文件句柄等),避免抛出异常。
3.继承与多态
继承方式:`public`/`private`/`protected`继承对基类成员访问权限的影响。
虚函数与纯虚函数:`virtual`关键字实现动态多态,纯虚函数与抽象类(不可实例化)。
函数重写(覆盖):函数签名(参数、返回值)必须与基类虚函数一致,`override`关键字的作用(显式声明重写,编译器检查)。
4.其他OOP特性
友元:友元函数与友元类(破坏封装,谨慎使用)。
运算符重载:成员函数重载(隐含`this`指针)与非成员函数重载,禁止重载的运算符(如`.`、`::`)。
(三)高级特性与标准库
1.模板
函数模板:参数化类型,模板特化(全特化与偏特化)。
类模板:模板参数,实例化方式,模板类的继承与友元。
2.标准模板库(STL)
容器:`vector`(动态数组,常用操作`push_back`、`resize`)、`string`(字符串处理,避免C风格字符串的安全问题)、`map`(键值对,有序)、`unordered_map`(哈希表,无序)。
迭代器:遍历容器的通用方式,`begin()`/`end()`,失效场景(如`vector`的`push_back`可能导致迭代器失效)。
算法:`sort`(自定义比较函数)、`find`、`for_each`等常用算法的基本使用。
3.异常处理
`try-catch`块:异常抛出与捕获流程,`throw`的使用,异常对象的生命周期。
异常规范:`noexcept`的作用(指示函数是否抛出异常)。
二、常见错误汇编与避坑指南
(一)语法与编译错误
1.变量与类型
未初始化变量:局部变量未初始化直接使用,导致未定义行为(如垃圾值)。
*示例*:`inta;couta;`(a的值不确定)。
类型不匹配:如将`float`赋值给`int`时丢失精度,或函数实参与形参类型不符。
2.函数与作用域
函数声明缺失:在调用函数前未声明,或声明与定义的参数/返回值不一致。
返回局部变量引用:局部变量生命周期随函数结束而结束,返回其引用将指向无效内存。
*错误示例*:`intfunc(){intx=5;returnx;}`
3.数组与指针
数组越界:访问超出数组大小的索引(如`inta[
原创力文档

文档评论(0)