- 1、本文档共23页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第三章对象一
类对象 为了使用类,还必须说明类的对象。在定义类时,系统是不会给类分配存储空间的,只有定义类对象时才会给对象分配相应的内存空间。 对象的定义格式: 类名 对象名表; 其中,类名是待定的对象所属的类的名字,即所定义的对象是该类的对象。对象名表中可以有一个或多个对象名,多个对象名用逗号分隔。在对象名中,可以是一般的对象名,还可以是指向对象的指针名或引用名,也可以是对象数组名。 对象成员 对象成员的表示方法 一个对象的成员就是该对象的类所定义的成员。对象成员有数据成员和成员函数。一般对象的成员表示如下: 对象名.成员名 或者 对象名.成员名(参数表) 前者用于表示数据成员,后者用于表示成员函数。这里的“.”是一个运算符,该运算符的功能是表示对象的成员。 示例 #include iostream.h class myclass { public: int data1; }; void main() { myclass object1; object1.data1 = 25; cout \n data1的值是 object1.data1\n; } 对象指针成员 指向对象的指针的成员表示如下: 对象指针名-成员名 或者 对象指针名-成员名(参数表) 同样,前者用于表示数据成员,后者用于表示成员函数。这里的“-”是一个表示成员的运算符,它与前面介绍过的“.”运算符的区别是:“-”用来表示指向对象的指针的成员,而“.”用来表示一般对象的成员。 对于数据成员和成员函数,以下两种表示方式是等价的: 对象指针名-成员名 与 (*对象指针名).成员名 示例 #include iostream.h class myclass { public: int data1; }; void main() { myclass objact1; myclass *pObject1 = objact1; pObject1-data1 = 25; cout \n data1的值是 pObject1-data1\n; } 构造函数 自动初始化对象的特殊的成员函数 与所属的类同名 可以在类中声明并定义构造函数,或在类中声明而在外部定义 构造函数没有返回类型 默认构造函数是不带任何参数的构造函数 示例1 class IMTI { public: IMTI(); //构造函数 }; IMTI() :: IMTI()() { } 示例2 class date{ public: date() //默认构造函数 {day=1; month=1; year=1999;} date(int x) //仅指定日 {day=x; month=1; year=1999;} date(int x, int y, int z) //指定年月日 {day=x; month=y; year=z;} private: nt month, day, year; }; 缺省构造函数 缺省构造函数是指不需要用户指定实参就能够被调用的构造函数,这并不意味着它不能接受实参。只意味着构造函数的每个参数都有一个缺省值与之关联。如: Account::Account() { ... } Stack::Stack( int size = 0 ) { ... } Complex::Complex(double re=0.0,double im=0.0) { ... } 构造函数 编译器根据参数调用不同的构造函数 date now; date today(4); date all(23,3,1998); 析构函数 在对象销毁时自动调用的成员函数 编译器会生成对析构函数的调用 与类同名,但是在函数名前有个波浪号 (~) 析构函数没有返回类型,也不带参数 一个类中只可能定义一个析构函数。 示例1 示例2 #includeiostream.h class Sample { public: Sample() {x = 0;} ~Sample() { cout析构函数被调用!endl; } int x; void Print() { coutx = xendl; } }; void main() { Sample s1; s1.Print(); s1.~Sample(); } 缺省析构函数 缺省析构函数的格式如下: 类名::~缺省析构函数名{ } 缺省构析函数名即为该类
文档评论(0)