第三章类和对象的深入讨论 本章教学目标: >~构造函数和析构函数的定义和使用 >对象数组和对象指针 >共用数据的保护 >对象的动态建立、释放、赋值和复制 >静态成员和友元 >类模板 0
本章教学目标: ➢构造函数和析构函数的定义和使用 ➢对象数组和对象指针 ➢共用数据的保护 ➢对象的动态建立、释放、赋值和复制 ➢静态成员和友元 ➢类模板 第三章 类和对象的深入讨论 ⚫0
第五讲学习目录 3.1、构造函数 一、 为什么需要构造函数 二、 构造函数的基本概念 三、构造函数的创建作业 ●1
第五讲 学习目录 3.1、 构造函数 一、为什么需要构造函数 二、构造函数的基本概念 三、构造函数的创建作业 ⚫1
3.1构造函数 一、为什么需要构造函数 设计一个时间类Time包含三个数据 成员时、分、秒和一个成员函数di splayTime()。 并调用该函数,输出数据成员的值。 ●2
3.1 构造函数 一 、为什么需要构造函数 设计一个时间类Time包含三个数据 成员 时、分、秒 和一个成员函数 di splayTime()。 并调用该函数,输出数据成员的值。 ⚫2
无构造函数的Time类示例 #include<iostream> using namespace std; ● class Time public: ● void displayTime() ● {cout<<"hour:"<<hour<<endl; cout<<"minute:"<<minute<<endl; cout<<"second:"<<second<<endl; } ● private: int hour; ● int minute; ● int second; }; ● int main() ● Timet1; th.displayTime(0月 ●} ●3
⚫ #include<iostream> ⚫ using namespace std; ⚫ class Time ⚫ { public: ⚫ void displayTime() ⚫ {cout<<"hour:"<<hour<<endl; ⚫ cout<<"minute:"<<minute<<endl; ⚫ cout<<"second:"<<second<<endl; ⚫ } ⚫ private: ⚫ int hour; ⚫ int minute; ⚫ int second; ⚫ }; ⚫ int main() ⚫ { Time t1; ⚫ t1.displayTime(); ⚫ } 无构造函数的Time类示例 ⚫ 3
3.1构造函数 如何为Time类的数据成员赋初值? (1)如果一个数据成员未被赋值,则它的值是不可预知的。( 真可怕) (2)类的数据成员不能在声明类时初始化。 因为类并不是一个实体,而是一种抽象类型,并不占存储空 间,显然无处容纳数据。(此路不通) (3)如果一个类的数据成员是公用的,可以在类外进行初始化 。(但违背了数据安全性原则) (4)可以使用成员函数(如iit0等)对数据成员初始化。但用户 在主函数中必须调用它们并记住其名字。(臃肿麻烦)
(1) 如果一个数据成员未被赋值,则它的值是不可预知的。( 真可怕) (2) 类的数据成员不能在声明类时初始化。 因为类并不是一个实体,而是一种抽象类型,并不占存储空 间,显然无处容纳数据。(此路不通) (3) 如果一个类的数据成员是公用的,可以在类外进行初始化 。(但违背了数据安全性原则) (4)可以使用成员函数(如init()等)对数据成员初始化。但用户 在主函数中必须调用它们并记住其名字。(臃肿麻烦) 如何为Time类的数据成员赋初值? 3.1 构造函数 ⚫4