第二章 类和对象 类的概念:C+中的类就是一种用户自定义的数据类型,和其他数 据类型不同的是,组成这种类型的不仅可以有数据,而且可以有对 数据进行操作的函数,它们分别叫做类的数据成员和类的函数成员。 定义性说明"和″引用性说明",定义性说明就是定义类,说明了类 的成员。而引用性说明就是只说明了类名,留待后面的代码对这个 类加以定义
第二章 类和对象 类的概念:C++中的类就是一种用户自定义的数据类型,和其他数 据类型不同的是,组成这种类型的不仅可以有数据,而且可以有对 数据进行操作的函数,它们分别叫做类的数据成员和类的函数成员。 "定义性说明"和"引用性说明" ,定义性说明就是定义类,说明了类 的成员。而引用性说明就是只说明了类名,留待后面的代码对这个 类加以定义
个完整的类定义包括关关键字 class类名{类体}在类体中为 类定义了值域(类中的数据成员的取值范围)和操作(类中的成员 函数名)。 class类名 public: 若干成员; protected 若干成员; private 若干成员;
一个完整的类定义包括关关键字class 类名{ 类体 }在类体中为 类定义了值域(类中的数据成员的取值范围)和操作(类中的成员 函数名)。 class 类名 { public: 若干成员; protected: 若干成员; private: 若干成员; };
private public protected三种访问权限、类说明(定义)中任何 成员不能使用 extern、auto和 register关键字进行修饰。不得对 类中数据成员进行初始化(赋初值)等。 public的成员:一般是成员函数,用于定义类的外部接口,在程序 中的任何部分都可访问。 private的成员:一般是数据成员,用于描述类的属性,它们只能 被类自身的成员函数访问,类的成员默认情况下是私有的。 关键字 private public protected的出现顺序是任意的,并且 可以不出现或出现多次。但类中的每个成员只能有一种特定的访 问属性
private public protected三种访问权限、类说明(定义)中任何 成员不能使用extern、auto和register关键字进行修饰。不得对 类中数据成员进行初始化(赋初值)等。 public的成员:一般是成员函数,用于定义类的外部接口,在程序 中的任何部分都可访问。 private的成员:一般是数据成员,用于描述类的属性,它们只能 被类自身的成员函数访问,类的成员默认情况下是私有的。 关键字 private public protected的出现顺序是任意的,并且 可以不出现或出现多次。但类中的每个成员只能有一种特定的访 问属性
Class cylinder public void setcylinder(doubler, double h) double getradiuso double getheighto double volume double surface areao private double radius double height 注:在类内不允许对声明的数据成员进行初始化
Class Cylinder { public : void setcylinder(double r,double h); double getradius(); double getheight(); double volume(); double surface_area(); private: double radius; double height; }; 注:在类内不允许对声明的数据成员进行初始化
此外,定义类之后,还要在程序中定义类的成员函数的实现,它的 一般形式为: 返回类型类名::成员函数名(参数说明) 函数体} 类体中定义的是数据成员和成员函数,而这里的函数体定义的是成 员函数的实现方法,但其形式是相同的,都是在{}里的一段代码。 注意定义类时,后要有分号;表示类定义语句的结束。 “∷:”是作用域运算符,它标明所要定义的函数属于哪个类 注:1、如果函数体的定义放在类的声明内,这样定义的函数自动成 为内联函数 2、如果在类外定义一个类的内联成员函数,应该在函数类型之 前用关键字 inline进行说明
此外,定义类之后,还要在程序中定义类的成员函数的实现,它的 一般形式为: 返回类型 类名::成员函数名(参数说明) {函数体} 类体中定义的是数据成员和成员函数,而这里的函数体定义的是成 员函数的实现方法,但其形式是相同的,都是在{ }里的一段代码。 注意定义类时,后要有分号;表示类定义语句的结束。 “::”是作用域运算符,它标明所要定义的函数属于哪个类 注:1、如果函数体的定义放在类的声明内,这样定义的函数自动成 为内联函数 2、如果在类外定义一个类的内联成员函数,应该在函数类型之 前用关键字inline进行说明
void Cylinder: setcylinder( doubler, double) radlus-r, height=h; double cylinder: getradiuso return radius, double Cylinder: getheighto freturn height double cylinder: volume double vol vol-3.1415926*radius*radius * height return vO
void Cylinder::setcylinder(double r,double h) { radius=r; height=h; } double Cylinder::getradius() { return radius;} double Cylinder::getheight() {return height;} double Cylinder::volume() {double vol; vol=3.1415926*radius*radius*height; return vol;}
使用类和对象: 类是用户定义的一种类型,它并不是具体的对象,好比"人"是 类,但”人"并不具体,我们通过”人"的特征可以找到具体的一个人 比如"张三"这个人,他就是一个对象。类也一样,在程序中我们根 据该类的类型说明一个变量,那么这个变量就是一个对象,它是具 体的,在内存中对象被分配相应的内存,它是以类作为样板生成的 根据这个样板,可以"做出"许多的对象来,这些对象就称为类的实 例。事实上建立对象时,只有每个对象的数据是分别占用内存的, 而操作这些数据的代码只有一份,由各对象共享,这是编译器实现 对象的一种方法而已,我们仍应理解为一个对象是独立的由数据和 代码组成
二、使用类和对象: 类是用户定义的一种类型,它并不是具体的对象,好比"人"是一个 类,但"人"并不具体,我们通过"人"的特征可以找到具体的一个人 比如"张三"这个人,他就是一个对象。类也一样,在程序中我们根 据该类的类型说明一个变量,那么这个变量就是一个对象,它是具 体的,在内存中对象被分配相应的内存,它是以类作为样板生成的。 根据这个样板,可以"做出"许多的对象来,这些对象就称为类的实 例。事实上建立对象时,只有每个对象的数据是分别占用内存的, 而操作这些数据的代码只有一份,由各对象共享,这是编译器实现 对象的一种方法而已,我们仍应理解为一个对象是独立的由数据和 代码组成
对象的声明: 与一般变量相同,对象也必须经过声明后才能使用,声明类的对 象如下: 类名对象名; Cylinder cylinder, cylinder 2 Cylinder cylinder[10] 访问对象的成员可用 (1)对象名数据成员名、对象名成员函数名(参数表) (2)指向该类对象的指针→>成员名 (3)对象的引用成员名 在C++中,数据封装是通过类来实现的。由于类中成员指定了访问 权限,所以程序中其他函数就不能访问对象的私有成员,只能通过 公有成员提供接口来访问
1、对象的声明: 与一般变量相同,对象也必须经过声明后才能使用,声明类的对 象如下: 类名 对象名; Cylinder cylinder1,cylinder2; Cylinder cylinder[10]; 访问对象的成员可用 (1)对象名.数据成员名 、对象名.成员函数名(参数表) (2) 指向该类对象的指针->成员名 (3)对象的引用.成员名 在C++中,数据封装是通过类来实现的。由于类中成员指定了访问 权限,所以程序中其他函数就不能访问对象的私有成员,只能通过 公有成员提供接口来访问
class A i public Int X setX(int a) getXO return x a object object x=5
class A { public: int x; setX(int a) { x=a; } getX() { return x; }; A object; object.x=5;
类的数据成员可以是类类型,也就是说类的声明中数据成员可以是 另一个类的对象,但必须注意以下两点: 、这个对象不能是本类的对象。 2、作为数据成员的对象所属的类,应该在声明这个对象之前进 行声明 class a class B a
类的数据成员可以是类类型,也就是说类的声明中数据成员可以是 另一个类的对象,但必须注意以下两点: 1、这个对象不能是本类的对象。 2、作为数据成员的对象所属的类,应该在声明这个对象之前进 行声明 class A { …………. } class B { ………… A a; ……………….}