对象的相关知识

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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<height:

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.指向常对象的指针最常用于形参,目的是保护形参指针所指向的对象,使他在函数执行的过程中不被修改。

相关文档
最新文档