C++程序设计 湖南大学 杜四春、银红霞 第8章类和对象 8.1类和对象 8.6堆与拷贝构造函数 8,2类对象 8.7this指针 8.3构造函数和析构函数8.8引用 8.4类的初始化 8.9常类型 8.5复杂的对象表示
C++程序设计 湖南大学 杜四春、银红霞 第8章 类和对象 8.1 类和对象 8.2 类对象 8.3 构造函数和析构函数 8.4 类的初始化 8.5 复杂的对象表示 8.6 堆与拷贝构造函数 8.7 this指针 8.8 引用 8.9 常类型
C++程序设计 湖南大学 杜四春、银红霞 类构成了实现C++面向对象程序设计的基 础,在C++语言面向对象程序设计中占据着核 心地位。它把数据和作用在这些数据上的操作 组合在一起,是封装的基本单元。对象是类的 实例,类定义了属于该类的所有对象的共同特 性
C++程序设计 湖南大学 杜四春、银红霞 类构成了实现C++面向对象程序设计的基 础,在C++语言面向对象程序设计中占据着核 心地位。它把数据和作用在这些数据上的操作 组合在一起,是封装的基本单元。对象是类的 实例,类定义了属于该类的所有对象的共同特 性
C++程序设计 湖南大学 杜四春、银红霞 8.1类和对象 从一般意义上讲,对象( object)是现实 世界中的客观事物。类是把具有相同属性的事 物划分为一类,从而得出的抽象概念。类是 组性质相同的对象的程序描述,它由概括了 组对象共同性质的数据和函数组成。 面向对象的程序设计中最基本的概念是对 象,一般意义上的对象指的是一个实体的实例 在这个实体中包括了特定的数据和对这些数据 进行操作的函数。对象的核心概念就是通常所 说的“封装性”( encapsulation)、“继承性” ( inheritance)和“多态性” ( polymorphism)
C++程序设计 湖南大学 杜四春、银红霞 8.1 类和对象 从一般意义上讲,对象(Object)是现实 世界中的客观事物。类是把具有相同属性的事 物划分为一类,从而得出的抽象概念。类是一 组性质相同的对象的程序描述,它由概括了一 组对象共同性质的数据和函数组成。 面向对象的程序设计中最基本的概念是对 象,一般意义上的对象指的是一个实体的实例, 在这个实体中包括了特定的数据和对这些数据 进行操作的函数。对象的核心概念就是通常所 说的“封装性”(encapsulation)、“继承性” (inheritance)和“多态性” (polymorphism)
C++程序设计 湖南大学 杜四春、银红霞 8 类的定义 类是一种用户自定义的数据类型,它的一般定义 格式如下 class≤类名> { private ; protected: ; public: ; ≤各个成员函数的实现>
C++程序设计 湖南大学 杜四春、银红霞 8.1.1 类的定义 类是一种用户自定义的数据类型,它的一般定义 格式如下: class { private: ; protected: ; public: ; } ;
C++程序设计 湖南大学 杜四春、银红霞 其中,cass是定义类的关键字。是一个标 识符,用于惟一标识一个类。一对大括号内是类的说 明部分,说明该类的所有成员。类的成员包括数据成 员和成员函数两部分。类的成员从访问权限上分有以 下三类:公有的( public)、私有的( private)和保护 的( protected),其中默认为 private权限。说明为公 有的成员可以被程序中的任何代码访问;说明为私有 的成员只能被类本身的成员函数及友元类的成员函数 访问,其他类的成员函数,包括其派生类的成员函数 都不能访问它们;说明为保护的成员与私有成员类似, 只是除了类本身的成员函数和说明为友元类的成员函 数可以访问保护成员外,该类的派生类的成员也可以 访问
C++程序设计 湖南大学 杜四春、银红霞 其中,class是定义类的关键字。是一个标 识符,用于惟一标识一个类。一对大括号内是类的说 明部分,说明该类的所有成员。类的成员包括数据成 员和成员函数两部分。类的成员从访问权限上分有以 下三类:公有的(public)、私有的(private)和保护 的(protected),其中默认为private权限。说明为公 有的成员可以被程序中的任何代码访问;说明为私有 的成员只能被类本身的成员函数及友元类的成员函数 访问,其他类的成员函数,包括其派生类的成员函数 都不能访问它们;说明为保护的成员与私有成员类似, 只是除了类本身的成员函数和说明为友元类的成员函 数可以访问保护成员外,该类的派生类的成员也可以 访问
C++程序设计 湖南大学 杜四春、银红霞 树8-1: void main include <iostream. h class sample Sample sl, 2(1, 2) lntⅩ y sl dispo public 52 .dispo Sampled ixy=0; Sample(int a, int b)xa; y=b Void dispo 此程序的运行结果为: 0,y=0 cout<<x<<x<<y=<<y<<endl
C++程序设计 湖南大学 杜四春、银红霞 例8-1: include class Sample { int x,y; public: Sample() {x=y=0;} Sample(int a,int b) {x=a;y=b;} Void disp() { cout<<”x=”<<x<<”,y=”<<y<<endl; } }; void main() { Sample s1,s2(1,2); s1.disp(); s2.disp(); } 此程序的运行结果为: x=0,y=0 x=1,y=2
C++程序设计 湖南大学 杜四春、银红霞 812类的成员函数 定义类的函数成员的格式如下: 返回类型类名:成员函数名(参数说明) { 函数体 类的成员函数对类的数据成员进行操作,成员函 数的定义体可以在类的定义体中,如例8-2所示
C++程序设计 湖南大学 杜四春、银红霞 8.1.2 类的成员函数 定义类的函数成员的格式如下: 返回类型 类名::成员函数名(参数说明) { 函数体 } 类的成员函数对类的数据成员进行操作,成员函 数的定义体可以在类的定义体中,如例8-2所示
C++程序设计 湖南大学 杜四春、银红霞 例8-2:类中的成员函数在类定义中直接描述示例。 class location i private public intⅩY: void init(int x, int y) public int GetXO X-Y f return X;) int GetO ireturn X;)
C++程序设计 湖南大学 杜四春、银红霞 例8-2:类中的成员函数在类定义中直接描述示例。 class Location { public: void init(int x,int y) { X=x; Y=y; } private: int X,Y; public: int GetX() { return X; } int GetY() { return X; } }
C++程序设计 湖南大学 杜四春、银红霞 类的成员函数也可以另外定义,而在类定义时给 出函数头 例8-2的成员函数可说明如下: void Location. init(int x, int y) int Location: GetYO return }∥将xy的值分别赋给XY int Location: GetXO return X
C++程序设计 湖南大学 杜四春、银红霞 类的成员函数也可以另外定义,而在类定义时给 出函数头。 例8-2的成员函数可说明如下: void Location::init(int x,int y) { X=x; Y=y; }//将x,y的值分别赋给X,Y int Location::GetX() { return X; } int Location::GetY() { return Y; }
C++程序设计 湖南大学 杜四春、银红霞 个类的说明可分为定义性说明和引用性说明两 种,引用性说明仅说明类名。例如: class location; 引用性说明不能用于说明类的变量,但可说明指 针,例如: class my Class( private t myclass member; //H myclass* pointer;对 注意:在类定义体外定义成员函数时,需在函数 名前加上类域标记,因为类的成员变量和成员函数属 于所在的类域,在域内使用时,可直接使用成员名字 而在域外使用时,需在成员名外加上类对象的名称
C++程序设计 湖南大学 杜四春、银红霞 一个类的说明可分为定义性说明和引用性说明两 种,引用性说明仅说明类名。例如:class Location; 引用性说明不能用于说明类的变量,但可说明指 针,例如: class myClass{ private: int i; myclass member;//错 myclass *pointer;//对 } 注意:在类定义体外定义成员函数时,需在函数 名前加上类域标记,因为类的成员变量和成员函数属 于所在的类域,在域内使用时,可直接使用成员名字, 而在域外使用时,需在成员名外加上类对象的名称