C++构造函数与初始化列表详解
需积分: 48 77 浏览量
更新于2024-08-19
收藏 17.46MB PPT 举报
"C++学习笔记,讲解了构造函数与初始化列表的使用,强调了构造函数初始化列表应按成员声明顺序书写,并避免不必要的成员初始化。同时,文件还提及了C++语言的发展历史、特点以及在不同领域的应用。"
在C++编程中,构造函数是一个特殊类型的成员函数,用于在创建对象时初始化类的成员变量。构造函数的名字与类名相同,没有返回类型,可以有参数。初始化列表在构造函数中用于设置新创建的对象的成员变量的初始值。在这个例子中,我们讨论了构造函数初始化列表的两个重要点:
1. 初始化次序:构造函数初始化列表的顺序不是由我们指定的,而是按照成员变量在类定义中的顺序进行。在第一个示例中,尝试先初始化`m_iY`再用它的值初始化`m_iX`,这会导致错误,因为`m_iY`此时还未被正确初始化。正确的做法是按照声明的顺序进行,即`m_iX`先于`m_iY`初始化。
```cpp
class Point
{
public:
Point(int aVal)
:m_iX(aVal), m_iY(m_iX) {} // 正确的顺序
private:
int m_iX;
int m_iY;
};
```
2. 避免成员初始化成员:通常,我们应该直接在初始化列表中设置成员变量的初始值,而不是在构造函数体内部使用赋值操作。这样做可以确保更高效地初始化,特别是在成员变量是类类型时,避免了额外的构造和析构调用。
```cpp
// 不推荐的方式,因为会额外构造和析构
class Point
{
public:
Point(int aVal)
{
m_iX = aVal; // 不必要的赋值操作
m_iY = m_iX; // 这样做可能导致额外的构造和析构
}
private:
int m_iX;
int m_iY;
};
```
文件还简述了C++的发展历程,由C语言扩展而来,增加了对数据抽象、面向对象和泛型编程的支持。C++的创始人是Bjarne Stroustrup,他在1979年开始开发这种语言,最终在1998年形成了ANSI/ISO C++标准。C++在系统编程、游戏开发、网络编程和嵌入式领域都有广泛的应用。
此外,文件提到的学习资源包括《面向对象程序设计及C++》一书,以及C++课程的相关信息,如课程性质、课时安排、作业形式等,这些信息对于学生或自学者来说非常有价值,有助于构建系统化的学习计划。
2019-09-06 上传
2022-09-23 上传
2020-11-19 上传
2021-02-07 上传
2021-06-29 上传
2021-04-24 上传
2022-07-25 上传
2018-10-07 上传
2021-06-01 上传
getsentry
- 粉丝: 28
- 资源: 2万+
最新资源
- SSM Java项目:StudentInfo 数据管理与可视化分析
- pyedgar:Python库简化EDGAR数据交互与文档下载
- Node.js环境下wfdb文件解码与实时数据处理
- phpcms v2.2企业级网站管理系统发布
- 美团饿了么优惠券推广工具-uniapp源码
- 基于红外传感器的会议室实时占用率测量系统
- DenseNet-201预训练模型:图像分类的深度学习工具箱
- Java实现和弦移调工具:Transposer-java
- phpMyFAQ 2.5.1 Beta多国语言版:技术项目源码共享平台
- Python自动化源码实现便捷自动下单功能
- Android天气预报应用:查看多城市详细天气信息
- PHPTML类:简化HTML页面创建的PHP开源工具
- Biovec在蛋白质分析中的应用:预测、结构和可视化
- EfficientNet-b0深度学习工具箱模型在MATLAB中的应用
- 2024年河北省技能大赛数字化设计开发样题解析
- 笔记本USB加湿器:便携式设计解决方案