面向对象编程:构造函数、析构函数与多态性实例

需积分: 38 5 下载量 157 浏览量 更新于2024-08-06 收藏 1.01MB PDF 举报
本文主要讨论了面向对象编程中的关键概念和C++语言中类的构造函数、析构函数以及成员函数的使用。以下是提炼的知识点: 1. **构造函数调用次数**: - 语句 "AB a(2), b[3], *p[4];" 中,`AB a(2)` 调用了一次构造函数,数组 `b[3]` 包含3个元素,每个元素都会调用构造函数,因此共调用3次。指针 `*p[4]` 不指向任何空间,所以不调用构造函数,总次数为4次。 - "AB (A)b(2), c[3], *p=&a;" 语句中,`AB (A)b(2)` 给了初始参数,调用了一次;`c[3]` 共调用3次无参构造函数;指针 `*p` 引用已存在的 `a`,不调用构造函数,总共4次。 2. **析构函数和构造函数的区别**: - 构造函数负责对象的初始化,可以带参数,而析构函数用于清理对象资源,无参数且仅在对象生命周期结束时自动调用。 - `delete []px;` 语句会释放动态数组中的n个对象,因此调用n次析构函数。 3. **初始化和构造函数的作用**: - 对类成员的初始化可以通过构造函数的初始化表来完成,这是优先于计算阶段的过程。 - 类中常量成员和引用成员的初始化同样在构造函数的初始化表中进行。 4. **构造函数参数和析构函数参数**: - 构造函数可以有任意数量的参数,而析构函数无参数。 5. **类属性和静态成员**: - 静态数据成员表示的是类的属性,而不是对象的属性,它只存在类的实例中,而非每个对象。 6. **访问控制**: - 类的静态成员可以被定义为私有、保护或公有。 7. **成员函数对数据成员的访问**: - 静态成员函数只能访问静态数据成员,而非静态成员函数则可以访问所有类型的(静态和非静态)数据成员。 8. **静态数据成员的初始化**: - 静态数据成员在全局区进行初始化。 9. **多态性和运算符重载**: - 多态性使得一个接口支持多种行为,允许向不同对象发送相同消息时产生不同行为。 - 运算符重载允许自定义运算符的行为,但不能改变运算符的优先级和结合性。 这些知识点覆盖了面向对象编程中的基础概念,对于准备期末考试的学生来说,理解和掌握这些要点非常重要。