欢迎来到天天文库
浏览记录
ID:50041853
大小:197.50 KB
页数:38页
时间:2020-03-08
《C++语言程序设计教程 第2版 普通高等教育十一五 国家级规划教材 教学课件 作者 吕凤翥 王树彬_ 第6章 类和对象(一).ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第6章类和对象(一)6.1类的定义格式和对象的定义方法6.2对象的初始化6.3数据成员的类型和成员函数的特性6.4静态成员6.5常成员6.6友元函数和友元类6.7函数的存储类6.1类的定义格式和对象的定义方法6.1.1类的定义格式//说明部分class<类名>{public:<成员函数和数据成员的说明或实现>private:<数据成员和成员函数的说明或实现>};//实现部分<函数类型><类名>::<成员函数名>(<参数表>){<函数体>}定义类的一般格式:关于类定义的若干说明如下。①定义类的关键字通常用class,也可以用struct等。②类的定义由
2、两大部分构成:说明部分和实现部分。③类的成员分为数据成员和成员函数两种。④类的成员具有访问权。类成员的访问权限有如下3种。public(公有的):公有成员不仅在类体内是可见的,而且在类体外也是可见的。private(私有的):私有成员仅在类体内是可见的,在类体外是被隐藏的。protected(保护的):保护成员对于定义它的类来讲,相当于私有成员;对于该类的派生类来讲,相当于公有成员。⑤成员函数可以定义在类体内,也可以定义在类体外。(1)先定义类类型,再定义对象这种分开定义对象的格式如下:<类名><对象名表>;6.1.2对象的定义方法(2)定义类类型同
3、时定义对象这种同时定义对象的格式如下:class<类名>{<类体成员>}<对象名表>;(3)使用无名类直接定义对象用无名类直接定义对象的格式如下:class{<类体成员说明与定义>}<对象名表>;(1)一般对象的成员表示用运算符。<对象名>.<数据成员名><对象名>.<成员函数名>(<参数表>)6.1.3对象成员的表示(2)指向对象指针的成员表示用运算符-><对象指针名>-><数据成员名><对象指针名>-><成员函数名>(<参数表>)(4)对象数组元素的成员表示同一般对象<数组名>[<下标>].<成员名>见书中例6.1。6.2对象的初始化构造函数的主
4、要功能就是用来初始化对象。6.2.1构造函数的功能、种类和特征1.构造函数的功能构造函数通常有如下3种。(1)默认构造函数这种构造函数的特点是不带参数。默认构造函数用户可以定义。如果在一个类体中,用户没有定义任何构造函数时,系统会自动创建一个默认的构造函数。2.构造函数的种类(2)带参数的构造函数构造函数可以带有一个或者多个参数。(3)拷贝构造函数拷贝构造函数是用来使用已知对象给所创建对象进行初始化时所用的构造函数。拷贝构造函数的格式如下:<构造函数名>(<类名>&<对象引用名>){<函数体>}如果一个类中,用户没有定义拷贝构造函数时,系统自动创建一
5、个默认的拷贝构造函数。构造函数还具有与一般成员函数不同的特点。①构造函数的名字同类名。②说明或定义构造函数时不必指出类型,也无任何返回值。③构造函数是系统在创建对象时自动调用的。3.构造函数的特点析构函数的功能正好与构造函数相反,它是用来释放所创建的对象的。一个对象在它的寿命结束时,系统将会自动调用析构函数将它释放掉。6.2.2析构函数的功能和特点析构函数与一般成员函数不同的特点。①析构函数名同类名,为与构造函数区别在析构函数名前加“~”符号。②析构函数定义时不必给出类型,也无返回值,并且无参数。③析构函数是由系统自动调用。如果一个类体内,用户没有定
6、义析构函数时,系统会自动创建一个默认的析构函数。析构函数由于没有参数,它不能被重载。见书中例6.2,例6.3。6.3数据成员的类型和成员函数的特性6.3.1类中数据成员类型的规定类中数据成员的数据类型是没有限制的。数据成员的存储类只有静态类。加存储类说明符static的为静态数据成员。1.成员函数可以重载6.3.2成员函数的特性成员函数可以重载,重载时应遵循参数可以区别的规则。见书中例6.4。C++语言规定,成员函数如果被定义在类体内,则为内联函数。如果要使定义在类体外的函数也为内联函数,需在定义时在函数头前加上关键字inline。见书中例6.5。2
7、.成员函数可以被说明为内联函数成员函数的参数可以设置为默认值。见书中例6.6。3.成员函数的参数可以设置默认值6.4 静态成员6.4.1静态数据成员在类体内使用关键字static说明的成员称为静态成员。静态成员包括静态数据成员和静态成员函数两种。静态成员的特点是它不是属于某对象的,而是属于整个类的,即所有对象的。对静态数据成员初始化的方法是在类体外使用如下格式进行初始化:<数据类型><类名>::<数据成员名>=<初值>;由于静态数据成员不是属于某个对象的,可以通过类名加作用域运算符进行引用。具体格式如下:<类名>::<静态数据成员名>;1.静态数据成
8、员的说明方法和初始化①静态数据成员不是属于某个对象,而是属于整个类的。②静态数据成员不随对象的创建而分配内存
此文档下载收益归作者所有