欢迎来到天天文库
浏览记录
ID:40239571
大小:517.00 KB
页数:44页
时间:2019-07-28
《Visual C++程序设计基础 第7章 类与对象ok》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第7章类与对象7.1类7.2对象7.3构造函数与析构函数7.4类与对象的进一步讨论7.5类的友元7.6类模板7.7继承与派生7.8虚函数7.9运算符重载§7.1类类是对一组客观对象的抽象,它将该组对象所具有的共同特征(包括结构特征和行为特征)进行归纳抽象,以说明该组对象的性质和能力。因此,一个类至少包含以下两个方面的描述:类所有实例共同具有的属性或结构特征,称为类的数据成员;类所有实例共同具有的操作、行为或方法,称为类的成员函数。在C++中,类是一种数据类型,与结构体有很多相似之处,类可以看作是在传统意义上的结构体上又加上了成员函数的一种数据类型。同结构体一样,在使用类之前必须要定义类。类
2、的定义可看作由说明部分和实现部分两部分来组成的。7.1.1类的定义说明部分用来说明该类中的成员,包括数据成员和成员函数的说明。成员函数是用来对数据成员进行操作的,又称为方法,实现部分是用来对成员函数的定义。1.类定义的说明部分class类名称{public:公有数据成员和成员函数protected:保护数据成员和成员函数private:私有数据成员和成员函数};⑴公有类型(public)公有成员用关键字public声明,它们是类的外部接口,任何外部访问都必须通过这个接口来进行。⑵私有类型(private)私有成员用关键字private声明。如果私有成员紧接着类名称声明,私有关键字priva
3、te可以省略。私有成员完全隐藏在类中,实现了访问权限的有效控制。⑶保护类型(protected)保护成员用protected声明,它与私有成员基本相似,但它对类的派生类有影响。它除了可以被本类中的成员函数访问外,还可以被本类的派生类的成员函数访问。其中class是定义类的关键字;类名称是标识符,用于惟一标识一个类,一般以“C”开头,以区别于其他标识符;一对大括号内是对类的说明,说明该类的所有成员。类的成员分为数据成员和成员函数,分别描述类所表达的问题属性和行为,是问题特性不可分割的两个方面。2.类定义的实现部分类定义的实现部分就是对类中成员函数的定义。类的成员函数描述类的行为,又叫“方法”
4、,是程序算法的实现部分,是对封装的数据进行操作的主要途径。在类定义的说明部分给出了成员函数的原型声明,说明函数返回值类型、函数名和函数的参数表,在类声明之外给出函数的具体实现,这是多数成员函数的定义方法。与普通函数不同的是,类外定义成员函数时要指明其所属类的名称,具体形式为:返回值类型类名::函数成员名(参数表){函数体}注意,在类声明外定义成员函数的实现时,必须在成员函数名前加上所属类名和作用域操作符“::”,从而说明该函数所属的类。7.1.2类的成员函数将成员函数声明为内联函数有两种方式:隐式声明和显式声明。如果将成员函数的函数体直接放在类定义体内,则该成员函数即为内联函数,这种方法称
5、为隐式声明。为了提高类声明的可读性,一般将函数定义写在类声明体外,而采用关键字inline显式声明其为内联函数。显示声明写在类声明体外的内联成员函数有两种方式,一种是在类声明体内的该函数的原型声明前加关键字inline,或者在类声明体外定义函数时,在函数返回值类型前面加上inline,在类内定义的函数被看作内联函数(inlinefunction),而在类外部定义的函数默认情况下都是非内联函数。内联成员函数和普通内联函数相同,在编译时编译系统会将函数体插入到每个调用它的地方,这样可以减少函数调用时的时间开销,提高执行效率;缺点是增加了程序的代码长度;所以,一般把相对简单的成员函数声明为内联函
6、数,而把较复杂的函数定义为非内联函数。1.内联成员函数inlinevoidCDate::ShowDate(){cout<7、数也可以带有缺省参数值,其调用规则同普通函数相同。声明成员函数带有的缺省参数值有两种方式,一种方式在类中声明该成员函数时给出缺省参数值,如:voidSetDate(inty=2008,intm=1,intd=1);2.带缺省参数的成员函数另一种方式是在函数定义中给出缺省的参数值,如:voidCDate::SetDate(inty=2008,intm=1,intd=1){Year=y;Month=m;Day=d;}void
7、数也可以带有缺省参数值,其调用规则同普通函数相同。声明成员函数带有的缺省参数值有两种方式,一种方式在类中声明该成员函数时给出缺省参数值,如:voidSetDate(inty=2008,intm=1,intd=1);2.带缺省参数的成员函数另一种方式是在函数定义中给出缺省的参数值,如:voidCDate::SetDate(inty=2008,intm=1,intd=1){Year=y;Month=m;Day=d;}void
此文档下载收益归作者所有