对象的相关知识
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
对象的相关知识
一.动态分配和撤销内存的运算符new和delete
(1)在软件的开发中经常要动态的分配和撤销内存空间,例如动态链表中结点的插入与删除。例如:
New int; //开辟一个存放整数的存储空间,返回一个指针。
New int(1); //同上并赋初值为1。
New char[10]; //开辟一个字符数组的空间,返回一个指针。
New int[5][4]; //开辟一个二维数组的空间,返回一个指针。
Float *p=new float(3.14159);//开辟并赋初值。
注意:撤销数组空间用
Delete [] 指针名;
撤销变量空间用
Delete 指针名;
(2)对象的动态建立和释放。
1.如果已经定义了一个类box。
可以用下面的方法建立一个对象,对象是无名的,但它确实存在。
New box;
2.动态分配返回一个指向新对象的指针,需要定义一个指向本类的对象指针来承接它。Box *p1;
P1=new box;
3.在程序中可以通过p1访问这个新建的对象。
Cout<
4.c++允许在执行new是初始化。
Box *p1=new box(12,15,18);
5.用完后delete [] p1;或delete p1;释放。
二.对象数组
(1)含义
对象数组的每一个元素都是同类的对象。
(2)初始化
1.当构造函数有一个参数时,可以用如下的方式初始化。
Student stud[3]={60,70,78};
2.当有多个参数时,用如下方式初始化。
Student stud[3]={student(1001,18,84),
student(1002,19,86),
student(1003,17,87)}:
三.对象指针
(1)指向对象的指针
1.定义对象指针的一般形式:
类名 *类对象指针名
2.用途:可以通过对象指针访问对象。
(2)指向对象成员的指针
1.指向对象的数据成员的指针
数据类型 *指针变量名
int *p1;
p1=&1.hour;
2.指向对象成员函数的指针。
普通函数:
数据类型名 (*指针变量名)(参数列表)
指针变量名=成员函数名
void (*p)();
p=fun;
(*p)(); //调用函数
对象成员函数
数据类型名 (类名::*指针变量名)();
指针变量名=&类名::成员函数;
3.This指针
This指针式指向本类对象的指针,他的值是当前被调用的成员函数所在对象的起始位置。即:
*This=a;
This指针是系统自动实现的,不必在形参中增加this。
注意:所谓“调用对象a的成员函数f”,实际是调用成员函数f时使this指针指向对象a,从而访问对象a的成员。
四.共用数据的保护
(1)常对象
1. 定义
类名const 对象名(参数列表);或const 类名对象名(参数表列);
注意:1.常变量的数据成员必须有初值。
2.对象中的所有数据成员的值都不能被改变,凡是需要数据成员不被改变的对象可以声明为常对象。
3.常对象不能调用该对象的非const型的成员函数(除了由系统自动调用的隐式的构造函数和析构函数)。
例如:const time t1(10,15,36)
T1.get_time //不合法
若将成员函数声明为常成员函数,则可以调用,但是不允许修改常对象中的数据成员。4.若在编程时一定要修改常对象中的某个数据成员的值,可以用mutable声明为可变的数据成员。
例如:mutable int count:
(2)常对象成员
1常数据成员
定义
Const int hour;
注意:1.只能通过构造函数的初始化表对其进行初始化,因为常数据成员不能被初赋值,2.在类中声明一个常数据成员,该类所有的该成员都不能改变,但是其值可以不同(在定义对象时给定)。
(2)常成员函数
定义:
Void get_time const;
注意:1常成员函数只能以用本类中的数据成员不能修改它们。
2.在声明和定义时都要有const关键字。但调用时不必加。
(3)指向对象的常指针
定义:tim *const ptr1=&t1.
注意:1在定义指针变量时使之被初始化。
Time *const ptr1=&t1; //正确
Time *const ptr1;
Ptr1=&t1; //错误
2.指向对象的常指针变量的值不能改变,即始终指向同一个对象,但是可以改变指向对象中数据成员的值。
用途:如果想将一个指针变量固定的与一个对象相联系,可以将它指定为常指针,往往用长指针作为函数的形参,目的是不允许在函数执行过程中改变指针变量的值,使其始终指向原来的对象。
(4)指向常对象的指针变量
1指向常变量的指针变量
定义:const 类型名 *指针变量名
注意:1.常变量只能用之指向常变量的指针指向他,而不能用一般的指针变量指向他。
2.指向常变量的指针除了可以指向常变量,还可以指向普通变量。可以通过指针变量访问该变量,但是不可以改变其值,如果不是通过指针变量访问,则变量的值是
可以改变的。
3.如果形参为指向非const型变量,则实参也为指向非const型,形参为指向const 型,则实参可以为任意型,因为当形参为指向非const型变量时,形参指针变量指
向的实参可以改变,则实参也必须可以改变,而当形参为指向const型时,形参指
针变量所指向的实参是不可以改变的,则实参可为任意。、
4.使用形参的和实参的对应关系如下;
注意:1常对象只能用指向常对象的指针指向他。
2.如果定义了一个指向常对象的指针变量指向一个非const的对象,则其指向的对象是不能通过指针来改变的
3.指向常对象的指针最常用于形参,目的是保护形参指针所指向的对象,使他在函数执行的过程中不被修改。