《C++语言》课程教学资源(PPT课件讲稿)第八章 类和对象

第8章类和对象 8.1概述 面向过程的程序设计方法采用函数(过程)来描述对数据的 操作,但又将函数与数据分离。这种实质上的依赖与形式上 的分离使得所编写出来的大型程序难于控制,严重时甚至可 能导致程序的崩溃。 C++的类体现了OOP技术所要求的抽象和封装机制。类将 欲处理目标的属性(数据)和对其进行操作的方法(函数) 封装成一个整体。这样,既把自然界中的一类实体抽象成 种具有自主行为的数据类型,同时又将它们的属性隐藏起来 以阻止外界的干扰。 类描述了数据类型的组织形式;对象则是类的实例,是存放 在内存中可操作的变量
第8章 类和对象 8.1 概述 面向过程的程序设计方法采用函数(过程)来描述对数据的 操作,但又将函数与数据分离。这种实质上的依赖与形式上 的分离使得所编写出来的大型程序难于控制,严重时甚至可 能导致程序的崩溃。 C++ 的类体现了 OOP 技术所要求的抽象和封装机制。类将 欲处理目标的属性(数据)和对其进行操作的方法(函数) 封装成一个整体。这样,既把自然界中的一类实体抽象成一 种具有自主行为的数据类型,同时又将它们的属性隐藏起来 以阻止外界的干扰。 类描述了数据类型的组织形式;对象则是类的实例,是存放 在内存中可操作的变量

8.2类 82.1类的说明 class class name I private. pr members, public: pub_members, protected: pro members, 其中:关键字 private,pubc和 protected为成员属性说明 符,它们分别指出其后所定义的成员分别为私有成员、公有 成员和保护的成员。由于类成员缺省的属性为私有的,所以 在不致于引起二义性的情况下可以省略关键字 private
8.2 类 8.2.1 类的说明 class class_name { pri_members; public: pub_members; }; 其中:关键字 private,public 和 protected 为成员属性说明 符,它们分别指出其后所定义的成员分别为私有成员、公有 成员和保护的成员。由于类成员缺省的属性为私有的,所以 在不致于引起二义性的情况下可以省略关键字 private

类的成员分为两类,一类类似于结构成员—是一些变量 叫做数据成员(对象的属性),另一类是函数,叫做成员函 数(对象的方法) 成员属性规定了成员的访问权限:私有成员只允许对象自身 的方法或友元函数(将在第11章中介绍)访问;公有成员 则还允许对象的“外部”的访问;保护的成员(将在第10 章中介绍)主要用来决定派生类中成员的访问权限。 通常,类中的数据成员被说明成私有的,以阻止外界的随意 访问;而成员函数被说明成公有的,为外界访问对象中的数 据提供一个安全的接口。根据实际需要,有时也将数据成员 说明成公有的,以方便外部的访间,但这样的数据安全性将 难以保证。成员函数也常常说明成私有的,这样的函数仅供 对象内部调用
类的成员分为两类,一类类似于结构成员——是一些变量, 叫做数据成员(对象的属性),另一类是函数,叫做成员函 数(对象的方法)。 成员属性规定了成员的访问权限:私有成员只允许对象自身 的方法或友元函数(将在第 11 章中介绍)访问;公有成员 则还允许对象的“外部”的访问;保护的成员(将在第 10 章中介绍)主要用来决定派生类中成员的访问权限。 通常,类中的数据成员被说明成私有的,以阻止外界的随意 访问;而成员函数被说明成公有的,为外界访问对象中的数 据提供一个安全的接口。根据实际需要,有时也将数据成员 说明成公有的,以方便外部的访问,但这样的数据安全性将 难以保证。成员函数也常常说明成私有的,这样的函数仅供 对象内部调用

∥ PERSON.H #if defined PERSON H #define PERSON H class Person private char Name gI int Age char Sex publIC void Register(const char*, int, char) void GetName(char*) GetAgeo char GetSexo fendi
// PERSON.H #if !defined _PERSON_H_ #define _PERSON_H_ class Person { private: char Name[9]; int Age; char Sex; public: void Register(const char*, int, char); void GetName(char*); int GetAge(); char GetSex(); }; #endif

般而言,类的定义通常都写到一个头文件(H或HPP) 中,供所有用到相应类类型的文件嵌入用。由于类中的成员 函数是由代码组成的,所以通常都将它们写到一个独立的源 程序(CPP)文件中,经编译后与使用对应类类型的模块链 接成一个程序 定义成员函数的一般形式为: type class_ name : func_name( agr_list) func body;
一般而言,类的定义通常都写到一个头文件(.H 或 .HPP) 中,供所有用到相应类类型的文件嵌入用。由于类中的成员 函数是由代码组成的,所以通常都将它们写到一个独立的源 程序(.CPP)文件中,经编译后与使用对应类类型的模块链 接成一个程序。 定义成员函数的一般形式为: type class_name :: func_name() { func_body; }

∥ PERSON. CPP include # include" person. h” 注意:成员函数若定义成: chark Person: GetNameo void Person: Register(const ch return Name strcpy (Name, nm) Age ag Sex =s 岂不是更简便吗?实际上这 样做将破坏数据有封装。由 于函数返回了成员Name的 void Person: GetName(char首地址,就为外部修改该成 员的提供了方便,从而也破 strcpy(nm, Name): 坏了该数据的安全性
// PERSON.CPP #include #include "person.h” void Person :: Register(const char* nm, int ag, char s) { strcpy(Name, nm); Age = ag; Sex = s; } void Person :: GetName(char* nm) { strcpy(nm, Name); } 注意:成员函数若定义成: char* Person :: GetName() { return Name; } 岂不是更简便吗?实际上这 样做将破坏数据有封装。由 于函数返回了成员 Name 的 首地址,就为外部修改该成 员的提供了方便,从而也破 坏了该数据的安全性

int Person:: GetAgeO return Age, char Person:: GetSex( return Sex
int Person :: GetAge() { return Age; } char Person :: GetSex() { return Sex; }

822类与结构 仅需记住一条:类与结构的唯一区别就在于,在类中定义的 成员缺省成员属性为私有的;而在结构中定义的成员缺省成 员属性为公有的
8.2.2 类与结构 仅需记住一条:类与结构的唯一区别就在于,在类中定义的 成员缺省成员属性为私有的;而在结构中定义的成员缺省成 员属性为公有的

82.3内联成员函数 成员函数也可以定义成内联的,而且形式更为灵活。例: 在头文件 PERSON.H中 class Person public void Register(const char*, int, char) void GetName(char*) int GetAgeo return Age, char GetSexO return Sex, 1
8.2.3 内联成员函数 成员函数也可以定义成内联的,而且形式更为灵活。例: 在头文件 PERSON.H 中 class Person { //... public: void Register(const char*, int, char); void GetName(char*); int GetAge() { return Age; } char GetSex() { return Sex; }

在源程序文件 PERSON. CPP中 inline void Person: Register(const chark nm, int ag, char s) strcpy(Name, nm) Age = ag, Sex = s inline void Person: GetName(char* nm strcpy(nm, Name)
在源程序文件 PERSON.CPP 中 inline void Person :: Register(const char* nm, int ag, char s) { strcpy(Name, nm); Age = ag; Sex = s; } inline void Person :: GetName(char* nm) { strcpy(nm, Name); }
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 《C++语言》课程教学资源(PPT课件讲稿)第七章 计算用户输入的一个正整数各位之和.pps
- 《C++语言》课程教学资源(PPT课件讲稿)第六章(6-4)指针和动态内存分配.pps
- 《C++语言》课程教学资源(PPT课件讲稿)第六章 指针和引用.pps
- 《C++语言》课程教学资源(PPT课件讲稿)第四章(4-10)编译预处理.pps
- 《C++语言》课程教学资源(PPT课件讲稿)第三章(3-4)循环的中断.pps
- 《C++语言》课程教学资源(PPT课件讲稿)第二章(2-6)赋值表达式和类型转换.pps
- 《C++语言》课程教学资源(PPT课件讲稿)第一章 绪论——面向对象的程序设计语言.pps
- 《C++语言》课程教学资源(作业习题)作业题2.doc
- 《C++语言》课程教学资源(作业习题)作业题1.doc
- 西安电子科技大学出版社:《汇编语言程序设计 Assembly Language Programming》课程教材电子教案(PPT课件讲稿)第九章 程序设计的一些编程技巧.ppt
- 西安电子科技大学出版社:《汇编语言程序设计 Assembly Language Programming》课程教材电子教案(PPT课件讲稿)第八章 高级汇编技术.ppt
- 西安电子科技大学出版社:《汇编语言程序设计 Assembly Language Programming》课程教材电子教案(PPT课件讲稿)第七章 复杂汇编程序设计.ppt
- 西安电子科技大学出版社:《汇编语言程序设计 Assembly Language Programming》课程教材电子教案(PPT课件讲稿)第六章 子程序设计.ppt
- 西安电子科技大学出版社:《汇编语言程序设计 Assembly Language Programming》课程教材电子教案(PPT课件讲稿)第五章 基本结构程序设计.ppt
- 西安电子科技大学出版社:《汇编语言程序设计 Assembly Language Programming》课程教材电子教案(PPT课件讲稿)第四章 指令及汇编语言源程序结构.ppt
- 西安电子科技大学出版社:《汇编语言程序设计 Assembly Language Programming》课程教材电子教案(PPT课件讲稿)第三章 寻址方式和指令系统.ppt
- 西安电子科技大学出版社:《汇编语言程序设计 Assembly Language Programming》课程教材电子教案(PPT课件讲稿)第二章 微处理器的结构及存储器组成.ppt
- 西安电子科技大学出版社:《汇编语言程序设计 Assembly Language Programming》课程教材电子教案(PPT课件讲稿)第一章 基础知识.ppt
- 西安电子科技大学出版社:《汇编语言程序设计 Assembly Language Programming》课程教材电子教案(PPT课件讲稿)第十章 中断和输入/输出程序设计.ppt
- 西安电子科技大学出版社:《汇编语言程序设计 Assembly Language Programming》课程教材电子教案(PPT课件讲稿)目录(编著:李强、温春).ppt
- 《C++语言》课程教学资源(PPT课件讲稿)第九章(9-3)拷贝初始化构造函数.pps
- 《C++语言》课程教学资源(PPT课件讲稿)第十章 顺序表.pps
- 《C++语言》课程教学资源(PPT课件讲稿)第十章(10-4)虚基类.pps
- 《C++语言》课程教学资源(PPT课件讲稿)第十一章(11-3)静态成员.pps
- 《C++语言》课程教学资源(PPT课件讲稿)第十二章(12-2)几个特殊运算符的重载.pps
- 《C++语言》课程教学资源(PPT课件讲稿)第十三章 输入和输出.pps
- 《C++语言》课程教学资源(PPT课件讲稿)第十四章 模板.pps
- 《C语言》课程教学资源(作业习题)C语言基础1(一).doc
- 《C语言》课程教学资源(作业习题)C语言基础1(二).doc
- 《C语言》课程教学资源(作业习题)习题讲解.doc
- 《C语言》课程教学课件(PPT讲稿)第10讲 结构体.ppt
- 《C语言》课程教学课件(PPT讲稿)第12讲 函数的定义和嵌套调用.ppt
- 《C语言》课程教学课件(PPT讲稿)第13讲 函数的调用和变量的作用域.ppt
- 《C语言》课程教学课件(PPT讲稿)第14讲 变量的存储类别.ppt
- 《C语言》课程教学课件(PPT讲稿)第14讲 变量的存储类别续.ppt
- 《C语言》课程教学课件(PPT讲稿)第15讲 指针定义和引用.ppt
- 《C语言》课程教学课件(PPT讲稿)第15讲 指针定义和引用续.ppt
- 《C语言》课程教学课件(PPT讲稿)第16讲 数组的指针和字符串的指针.ppt
- 《C语言》课程教学课件(PPT讲稿)第16讲 数组的指针和字符串的指针续.ppt
- 《C语言》课程教学课件(PPT讲稿)第17讲 改错.ppt