C++构造函数与初始化列表详解

需积分: 48 1 下载量 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++课程的相关信息,如课程性质、课时安排、作业形式等,这些信息对于学生或自学者来说非常有价值,有助于构建系统化的学习计划。