c++第8章类和对象教程.pptVIP

  • 1
  • 0
  • 约4.58千字
  • 约 33页
  • 2018-04-23 发布于广东
  • 举报
需要注意的是: 虽然调用不同对象的成员函数时都是执行同一段函数代码,但是执行结果一般是不相同的。不同的对象使用的是同一个函数代码段,它怎么能够分别对不同对象中的数据进行操作呢?原来C++为此专门设立了一个名为this的指针,用来指向不同的对象。 在调用某个对象的成员函数时,这个this指针会隐含地作为参数传递给这个函数。 Student a,b; a.SetSno(1);---a.SetSno(1,this); b.SetSno(2);---b.SetSno(2,this); void Student::SetSno(int s,Student *this) { this-sno=s; } sno name sno name this a b this 对象a的this指针 对象b的this指针 第8章 类和对象 8.1 面向对象程序设计方法概述 8.2 类的声明和对象的定义 8.3 重载成员函数 8.4 成员的存储方式 8.1 面向对象程序设计方法概述 到目前为止,我们介绍的是C++在面向过程的程序设计中的应用。对于规模比较小的程序,编程者可以直接编写出一个面向过程的程序,详细地描述每一瞬时的数据结构及对其的操作过程。但是当程序规模较大时,就显得力不从心了。C++就是为了解决编写大程序过程中的困难而产生的。 我们编程往往是要解决实际问题,而这些实际问题又对应着客观世界中的事、物。这就存在一个问题——我们的程序如何更好地描述这些事物。 客观世界中任何一个事物都可以看成一个对象(object)。客观世界就是由千千万万个对象组成的。 对象可以是具体的,如一辆汽车、一个学生、一篇文章、一个图形,也可以是抽象的,如一项计划、一个事件。 要想描述这样对象,就必须弄清对象的本质。 客观世界中的对象之间是可相互区别的,因为它们都有各自的特征,这些特征我们用属性来描述。 同类对象我们用相同的属性来描述,同类对象的个体其属性的值各异。 比如学生可以用学号、姓名、性别、年龄来描述。 这里学生这一概念其实是一个类型——描述了具有相同特征的一类对象的共同属性。 而学生个体(对象),他们各自的属性值是不一样的。 学生A 学号 002 姓名 李小龙 性别 男 年龄 21 学生B 学号 007 姓名 王昭君 性别 女 年龄 16 光用属性来描述对象还是不够的。 现实中对象不仅有属性,还具有行为。 学生B:报告老师, 吾的学号是007, 俺叫王昭君, 我是女生, 咱芳龄28。 在C++中,用类的概念来描述一类对象。 类是一种广义的数据类型。这种数据类型既包含数据,也包含操作数据的函数。 数据——描述属性; 函数——对数据的操作,描述行为。 8.2 类的声明和对象的定义 8.2.1类和对象的关系 在C++中对象的类型称为类(class)。 类是对象的抽象,而对象是类的具体实例(instance)。 在C++中需先声明一个类类型,然后用它去定义若干个同类型的对象。对象就是类类型的一个变量。可以说类是对象的模板,是用来定义对象的一种抽象类型。 类是抽象的,不占用内存,而对象是具体的,占用存储空间。在一开始时弄清对象和类的关系是十分重要的。 由于对象是类的实例,在进行分析和设计时,通常把注意力集中在类上,而不是具体的对象上。 8.2.2 声明类类型 class Student { private: int sno; string name; public: void SetSno(int s); void SetName(string n); int GetSno( ); string GetName( ); }; 定义类的一般格式: class 类名 { private: 成员表1; //私有的数据和成员函数 public: 成员表2; //公用的数据和成员函数 protected: 成员表3; //受保护的数据和成员函数 }; 注意: ①类是一种数据类型,定义时系统并不为其分配内存,故不能对类的数据成员进行初始化。 ②成员函数可以直接使用类定义中的任一成员。 类成员的访问限定 private、public和protected称为成员访问限定符。 private:私有的,类外不能访问。 public:公用的,类外可访问。 protected:受保护的,不能被类外访问(这点与私有成员类似),但

文档评论(0)

1亿VIP精品文档

相关文档