对象的创建 声明一个类后,便可将其作为新数据类型来创建变量,即对象 ●对象的声明 类的名称对象名 例:c1ckx;∥声明对象 Clock y, z; NOTE 对象所占的内存空间只用于存放数据成员,函数成员在内存中只占一份空间, 不会在每个对象中存储副本
16 对象的创建 ⚫ 对象的声明 例: 声明一个类后,便可将其作为新数据类型来创建变量,即对象 Clock x; // 声明对象 Clock y, z; 类的名称 对象名 † 对象所占的内存空间只用于存放数据成员,函数成员在内存中只占一份空间, 不会在每个对象中存储副本。 NOTE
对象成员的访问 ●访问对象的成员的一般方式 对象名.数据成员名 对象名,函数成员名(参数列表) 例 myclock. showTime myclock setTime (16, 10, 28); NOTE 十类的成员函数可以访问所有数据成员。 十外部函数只能访问公有成员。 17
17 对象成员的访问 ⚫ 访问对象的成员的一般方式 例: 对象名.数据成员名 对象名.函数成员名(参数列表) myclock.showTime(); myclock.setTime(16,10,28); † 类的成员函数可以访问所有数据成员。 † 外部函数只能访问公有成员。 NOTE
成员函数 ●成员函数的定义 ●可以直接在类内部定义(一般适合简短函数) ●也可以在类内部声明,然后在类外部定义(适用复杂函数) 在外部定义的一般形式 数据类型类的名称:函数名(形参列表) 函数体; ●注意:在外部定义时需加上类的名称和两个连续冒号(作用域分辨符) 例 void Clock: setTime(int newH, int newM, int news) hour=newH minute=newM: second=news 18
18 成员函数 ⚫ 成员函数的定义 ⚫ 注意:在外部定义时需加上类的名称和两个连续冒号(作用域分辨符) 例: ⚫ 可以直接在类内部定义(一般适合简短函数) ⚫ 也可以在类内部声明,然后在类外部定义(适用复杂函数) 数据类型 类的名称::函数名(形参列表) { 函数体; } void Clock::setTime(int newH, int newM, int newS) { hour=newH; minute=newM; second=newS; } 在外部定义的一般形式
目的对象 调用成员函数时,需用“。”操作符指定调用所针对的对象, 此时,该对象就称为本次调用的目的对象。 成员函数可以直接引用目的对象的所有数据成员,而无需使 用“。”操作符。 在成员函数中,引用其它对象的数据成员和函数成员时,必 须使用“。”操作符。 成员函数既可以访问目的对象的私有成员,也可以访问当前 类的其它对象的私有成员。 19
19 目的对象 调用成员函数时,需用“.” 操作符指定调用所针对的对象, 此时,该对象就称为本次调用的目的对象。 成员函数可以直接引用目的对象的所有数据成员,而无需使 用“ .” 操作符。 在成员函数中,引用其它对象的数据成员和函数成员时,必 须使用“ .” 操作符。 成员函数既可以访问目的对象的私有成员,也可以访问当前 类的其它对象的私有成员
形参带缺省值 ●成员函数的形参可以带缺省值 class Clock public: void setTime (int NewH=0, int NewM=0, int NewS=0; NOTE 形参的缺省值只能在类内部设置 不能在类外部的函数定义中设置。 20
20 形参带缺省值 ⚫ 成员函数的形参可以带缺省值 class Clock { public: void setTime(int NewH=0, int NewM=0, int NewS=0); ... ... }; † 形参的缺省值只能在类内部设置。 † 不能在类外部的函数定义中设置。 NOTE