欢迎来到天天文库
浏览记录
ID:50043086
大小:227.00 KB
页数:46页
时间:2020-03-08
《C及C++程序设计 第3版 教学课件 张富 第15章-类.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第15章类类的结构15.1类中的内联函数15.2类的友元成员15.3类的静态成员15.4对象作为函数的参数15.5类的指针15.6小结15.715.1类的结构15.1.1类的定义定义类的一般形式为:class类名{private:数据成员和成员函数protected:数据成员和成员函数public:数据成员和成员函数};其中class是定义类的关键字。类名是用户为类起的名字,是C++的合法标识符。类名后花括号内是类的说明部分,包括类的数据成员(属性)和成员函数(服务,行为或功能)。有三种不同性质的数据成员和成员函数。它们分别是pri
2、vate(私有的)、protected(保护的)和public(公有的)数据成员和成员函数。private,protected和public称为访问控制字。类的私有成员只能被本类定义的成员函数所访问。类的公有成员可以被外部,不属于该类的程序代码访问。公有成员多为成员函数,用来提供与外界的接口。外界只能通过这个接口访问私有成员。私有成员多为数据成员。类是封装的手段,它通过成员的访问控制字,实现对成员有限制地使用。15.1.2类成员函数的定义类成员函数的定义既可以在类定义的内部完成,即在定义类的同时给出成员函数的定义,也可以在类之外进行
3、。在类定义中说明成员函数的同时定义成员函数,与一般的定义函数没有什么区别。如果是在类定义之外定义成员函数,由于不同类的成员函数可能有相同的名字,因此,在定义成员函数时,要指明该函数是属于哪个类的。说明的方法是,在函数名与类名之间插入一个作用域区分符“::”。成员函数定义的一般形式为:函数类型类名::函数名(参数){函数体}15.1.3类的对象的定义与访问1.定义对象类是对象的抽象描述,对象是类的具体实例(Instance)。因此,在定义了类之后,就可以像定义int,float等类型变量那样去建立类的对象。可以使用以下两种定义对象的方
4、法。第一种方法是在定义了类之后,使用下面形式的语句:class类名对象名;或类名对象名;定义类的对象。第二种方法是将对象名写在类定义的右花括号之后:class类名{类数据成员和成员函数}对象名;2.定义对象数组可以像定义其他数据类型一样,定义对象数组。3.访问对象成员当定义了一个类的对象后,就可以访问对象的成员了。访问对象成员可用成员选择符“.”。访问对象的数据成员时,其形式为:对象名.数据成员对象名.成员函数;15.2类中的内联函数15.2.1用修饰符inline说明成员函数可以将“inline”写在相应成员函数名的前面。这里有两
5、种情况:或者是在类定义中成员函数名前;或者写在类定义外定义函数时的函数名前。15.2.2隐式内联函数在类定义内,直接定义成员函数时,成员函数就自动地转换为内联函数。因此,不需修饰符inline。这样定义的成员函数就是隐式内联函数。15.3类的友元成员友元成员把原来没有联系的类或函数联系起来。友元成员用关键字friend声明,友元成员可以声明在类的任何地方:私有部分或公有部分。一个函数可以是多个类的友元函数,但需要在各类中分别声明。而友元函数的定义既可以在类的内部,也可以在类的外部。友元函数访问类的成员时,需要在参数中给出所要访问的对
6、象。友元成员有三种:友元函数、友元成员函数和友元类。15.3.1定义友元函数如果把一个独立的非成员函数说明为类的友元,则该函数称为友元函数。这个函数能够访问该类的私有部分。这种友元函数虽然是在类内声明或定义的,但它不是类的成员,它不属于任何类,它是普通函数。在类中声明友元函数的形式为:friend函数原型声明;15.3.2定义友元成员函数如果一个类的成员函数声明为另一个类的友元,则称这个成员函数为友元成员函数。这样就可以使两个类进行某种联系,相互配合工作。定义友元成员函数的一般形式为:friend返回值类型类名::函数名(参数);1
7、5.3.3定义友元类一个类也可以声明为另一个类的友元类。其目的也是为了将两个类联系起来。定义友元类的一般形式是:friendclass类名;最后还要指出两点。一是类之间的友元关系是不能传递的。意思是说,你是我的朋友,他是你的朋友,但他不一定是我的朋友。二是友元关系是不可逆的。也就是说,A是B的友元,但这不意味着B是A的友元。15.4类的静态成员在C++的类中引入了静态数据成员和静态成员函数的概念。静态成员用static说明。其一般形式为:static数据成员;static成员函数;15.4.1静态数据成员不管一个类的对象有多少个,其
8、静态数据成员却只有一个,由这些对象共享。而普通数据成员是属于每个对象的,分配有各自的存储空间。【例15-10】下面的类counter含有一个静态数据成员count。同时又说明了四个对象c1,c2,c3和c4。类counter的定义如下
此文档下载收益归作者所有