visual C++类和对象专题讲解

上传人:marr****208 文档编号:149762976 上传时间:2020-10-30 格式:DOC 页数:129 大小:453KB
返回 下载 相关 举报
visual C++类和对象专题讲解_第1页
第1页 / 共129页
visual C++类和对象专题讲解_第2页
第2页 / 共129页
visual C++类和对象专题讲解_第3页
第3页 / 共129页
visual C++类和对象专题讲解_第4页
第4页 / 共129页
visual C++类和对象专题讲解_第5页
第5页 / 共129页
点击查看更多>>
资源描述

《visual C++类和对象专题讲解》由会员分享,可在线阅读,更多相关《visual C++类和对象专题讲解(129页珍藏版)》请在金锄头文库上搜索。

1、第3章 类和对象要求掌握:u C+怎样构造类和使用类u 构造函数和析构函数u 对象的指针本章主要内容n类的定义n成员函数的定义n对象的定义n构造函数与析构函数nC+的封装性n实例分析 3.1 类和对象的基本概念311 C+类的构成类是一种将数据和操作合并为单一结构的类型定义。用方程式表示:类 = 数据 + 操作(函数)C+类的构成包括类的声明、类的定义两个部分。一、 类的声明类的声明包括:类的成员声明和类成员的访问控制声明。形式:class 类名 private: 私有数据和函数 只能由public中的函数使用 protected: 保护数据和函数 保护成员被该类和它的派生类访问public:

2、 公共数据和函数 可供用户使用类定义的结束标志“;”容易被漏掉;关键字 class 用以声明一个类class 后面的 CTime是用户自定义类名CTime是一个新的类型如:class CTimeprivate:int hour;数据成员int minute;int second;public:void SetTime(int h, int m,int s);成员函数int GetHour() return hour;int GetMinute() return minute;int GetSecond() return second;类是由数据和函数构成,它们称为类的成员。 公有成员 在关键字

3、public后面声明,它们是类与外部的接口,任何外部函数都可以访问公有类型数据和函数。class A int x; public: int y; void SetXY(int,int);void A:SetXY(int a,int b) x = a; y = b; void main() A as ; as.SetXY(5,5); /Ok as.y=5; /Ok私有成员 在关键字private后面声明,只允许本类中的函数访问,而类外部的任何函数都不能访问。如果紧跟在类名称的后面声明私有成员,则关键字private可以省略。class A int x; public: int y; void S

4、etXY(int,int);void A:SetXY(int a,int b) x = a; y = b;void main() A as ; as.SetXY(5,5); /Ok as.x=5; /ErrorNote:1. 类名后面的 表示类的声明范围,最后的分号表示类声明的结束。2. 建议把所有的私有成员和公有成员归类放在一起,并将私有成员放在公有成员的前面。3. 数据成员可以是任意数据类型,但不能用auto 、register或 extern进行说明。例:class abcd auto a; / 非法register b; / 非法extern c; / 非法 int d; public

5、:int get(d);4. 不能在类的声明中给类的数据成员赋初值;在类对象定义之后才能给数据成员赋初值。 例:class abc char a=q; / 非法 int b=33; / 非法public:int get(b);二、成员函数的定义(类的定义)C+提供两种方式定义成员函数,类中的成员函数的定义既可放在类中,也可放在类的外面。第一种方式:在类的声明中,只给出成员函数的原型(用现代风格说明);而成员函数的定义放在类体的外部,称为外联函数。成员函数的定义放在外面,需在函数名前面加上类名和作用域区分符“:”。成员函数体在类的外部定义。其形式为:返回类型 类名 : 函数名(参数表)类名加在成

6、员函数名之前,而不是加在函数的返回类型前/ 函数体class CTime CTime : hour private:int hour;int minute;int second; public:void SetTime(int h, int m,int s);int GetHour() return hour;int GetMinute() return minute;int GetSecond() return second;CTime : GetSecond();int hour = 0; / 全局变量int minute =0;int second = 0;void SetTime(in

7、t h, int m, int s):不跟类名时,表示全局数据或全局函数(即非成员函数):hour = h; :minute=m;:second=s; /全局函数 void main() CTime t ; :SetTime(5,5,5); /调用全局函数 t.SetTime(:hour,:minute,:second) ; /调用类的成员函数例: 声明并定义坐标点类class point int x ,y; public: void setpoint(int,int); int getx(); int gety();void point:setpoint(int a ,int b) x=a;

8、y=b; 在类定义的外部定义成员函数,必须在该函数前面使用“类名:”表达式形式把它与该类紧密连在一起;否则编译器就会认为该函数是一个与类中的成员函数同名的普通函数。int point:getx() return x; int point:gety() return y; note:1) setpoint、 getx()和gety()都在类的外部定义,但他们是类的成员函数,可以直接使用私有数据成员x和 y。2) 在定义成员函数时,对函数所带的参数,不但要说明它的类型,还要指出参数名。3) 在所定义的成员函数名之前应缀上类名,在类名和函数名之间加上“:”。4) 在定义成员函数时,其返回类型要与类声

9、明中的函数原型中的返回类型一致。第二种方式:将成员函数定义在类的内部。称为内联函数。在C+中可用两种格式。1 隐式定义:直接将函数定义在类的内部。2 显示定义:函数的原型在类体内,函数的定义在类体外,但是函数类型前面有关键字“inline”如:class A int x,y;private:void setxy(int i,int j) 内联函数(隐式) x=i; y=j; ;又如:class A int x,y;private:void setxy(int i,int j); 内联函数(显式);inline void A:setxy(int i,int j) x=i; y=j; 说明:(1)

10、 将成员函数定义成内联函数,在调用内联函数的地方放的是该函数的可执行代码,执行调用函数时,不进行一般函数的调用操作,可以提高执行效率。(2) 将成员函数定义成内联函数,程序长度加大,一般对非常简单的函数才声明成内联函数。实际应用中有时将外联和内联两种成员函数定义方式结合起来用。312对象的定义和使用(类的使用)class定义的是类型,具有类类型的变量称为对象。声明了类之后,在类的使用时再定义对象,一旦定义了class之后,就可以象用int那样去定义对象。1 定义对象的格式: 类名 对象名1,对象名2;如:point p1,p2;p1 p2是具有point类类型的两个对象。2 对象的使用(使用对

11、象成员)对象的使用是指对对象成员的使用,不论是数据成员还是成员函数,只要是公有的,就可以被外部函数直接使用。称为“对象选择符”,简称点运算符使用格式:对象名.数据成员 对象名.成员函数(实参表)调用成员函数的形式类似于访问一个结构对象的分量,先指明对象,再指明分量。例: void main() point p1,p2; int i,j; p1.setpoint(3,4); p2.setpoint(7,8); i=p1.getx(); j=p1.gety(); cout”p1 i=” i”p1 j=”jendl; i=p2.getx(); j=p2.gety(); cout”p2 i=” i”p

12、2 j=”j数据成员名指针变量名-成员函数名(参数)例:void main() /.point p1 , *p;p=&p1;p-setpoint(2,3);/.3 . 对象赋值语句 如果有两个整型变量x和y,那么用y=x; 就可以把x的值赋给y。同理,同类型的对象之间也可以进行赋值,当一个对象赋值给另一个对象时,所有的数据成员都会逐位拷贝。例如,A和B是同一类的两个对象,假设A已经存在,那么下面的对象赋值语句把对象A的值逐位拷贝给对象B。下面我们看一个使用对象赋值语句的例子。例34#include class myclassint a,b;public: void set( int i,int j) a=i; b=j; void show()

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号