c++程序设计(二).ppt
文本预览下载声明
C++程序设计(二) 常宝宝 北京大学计算机科学与技术系 chbb@pku.edu.cn 内容提要 C语言中的结构 类 定义成员函数 定义对象 为类成员指定存取权限 类与面向对象的程序设计 C语言中的结构 在C语言中,可以把由多个不同类型数据组成的复杂数据类型定义为结构。组成结构的各个分量被称作结构的成员。 一旦定义了一个结构类型,可以在程序中建立结构类型变量,并通过使用成员运算符(.)存取结构类型变量的各个成员。 类 为了支持面向对象的程序设计,C++提供了定义类的方法,类的概念和结构类似,不同之处在于类的成员不仅可以是数据,还可以是函数,分别称为类的数据成员和成员函数。 对于类中的每一个成员,C++允许指定其存取权限。 在定义了类后,可以建立类型为类的变量,类型为类的变量就是对象。定义对象的方法和定义结构类型变量的方法是类似的。 对象一旦建立,程序员也可以存取对象的各个成员,但是否可以存取要受制于定义类时指定的存取权限。存取对象成员的方式和存取结构变量成员的方式类似,使用成员运算符(.)。 类 类 类的定义使用保留字 class 类的定义意味着——定义数据成员定义成员函数指定成员的存取权限 定义类的基本格式 class 类的名字 { … };//不要忘记这个分号 定义类的数据成员 在类中定义数据成员和在C的结构中定义(数据)成员的方法相同。如:class TDate { …… int year; int month; int day; …… }; 定义类的成员函数 类的成员函数定义了该类所能提供的功能。 定义成员函数的方法和普通(全局)函数类似,但不完全相同。 例子日期类TDate的对象代表一个日期,和日期有关的操作是: 初始化日期(设定日期的初值); 把日期按照指定的格式显示出来; 判断该日期的年份是否闰年;…… 在类的内部定义成员函数 定义成员函数,有两种选择,一种是在类内定义,一种是在类外定义。 如果类的成员函数比较简单,可以选择在类中进行定义。 在类的内部定义成员函数 在类的内部定义成员函数 在类中定义的成员函数一般比较简单,编译器一般将其处理为内联函数,既使没有使用保留字 inline。 类通常放在头文件中进行定义,如果在类中进行定义成员函数,成员函数代码会泄漏。 如果在类中定义成员函数过多,类定义和成员函数定义混在一起,很不清晰,不利于程序的阅读。 在类的外部定义成员函数 C++允许在类的外部定义成员函数,这样完整的类定义分成两个部分,一部分是类定义,这一部分放在头文件(H文件)中;另一部分是成员函数的定义,这部分通常放在cpp文件中。 如果在类的外部定义成员函数,此时类定义中只需定义数据成员及列出该类的成员函数原型。 在类的外部定义成员函数 在类的外部定义成员函数时,不同之处在于应在成员函数名前增加作用域指示符,指明该成员函数隶属于哪个类,格式如下: 返回类型 类名::成员函数名(形式参数表) { ...... } 在类的外部定义成员函数 定义类的对象 在C++中,可以在程序中定义类的对象,就象建立结构类型的变量,例如: TDate a; //a是类TDate的对象。 在定义了该类的对象后,可以访问对象的数据成员以及调用该类对象的成员函数,这时要使用成员运算符(.),要同时指明对象名和成员名。 a.Set(9,27,2003); //调用对象的成员函数 a.Print(); //调用对象的成员函数 a.year = 2004; //给对象的数据成员赋值 a.month = 11; //给对象的数据成员赋值 定义类的对象 定义某类的对象意味着在内存中分配一片存储空间存储对象的各个数据成员。 调用对象的成员函数或存取对象的数据成员有可能改变对象的状态(即对象数据成员的值)。 定义类的对象 不但可以定义某类的对象,也可以定义指向某类对象的指针,此时存取对象的成员要使用指针成员运算符(-)。 TDate a, *pa; pa = a; pa-Set(9,27,2003); pa-Print(); 可以定义某类对象的引用,此时应注意初始化,此时存取对象成员仍然使用成员运算符(.)。 TDate a; TDate ra = a; ra.Set(9,27,2003); ra.Print(); 类及其客户 如果某个普通函数或另外一个类中用到了类A,该函数或类可以称为类A的客户。如:int main() { TDate a; ... a.Set(9,27,2003); a.Print(); ... } 在main函数中定义了TDate类的对象
显示全部