C++对象

研究生学习生涯之C++面向对象编程

2019.8.12

对象

对象概述

1.对象概述

对象是现实世界中的实体,其一般上具有以下特性:
(1)每一个对象都有一个用于其他对象相区别的名字。
(2)具有某些特性,我们称它为属性或状态。
(3)有一组操作,每一个操作决定对象的一种行为(即对象)能干什么。
(4)对象的状态只能被自身的行为所改变。
(5)对象之间以消息传递的方式相互通信。

在面向对象的概念中,将对象的内部状态称为属性,将其行为称为方法或事件。对象之间的联系通过消息来传递,消息机制是对象间相互联系和相互作用的方式。

要使用类,还必须用已经定义的类去说明它的实例变量(即对象)。在C++中,class类型一旦被定义,它的实例变量(对象)就能被创建,并初始化,且能定义指针变量指向它。实例化的类就是对象。

2.对象的声明

定义一个新类后,就可以通过类名来定义一具对象,声明的形式如下:

类名 对象名表

说明:类名是定义好的新类的标识符,对象名表是一个或多个对象的名称,如果声明的是多个对象就用逗号运算符分隔。

3.对象的引用

声明完对象就是对象的引用了,对象的引用有两种方式,一种是成员引用方式,一种是对象指针引用方式。

1).成员引用方式

成员变量引用的表示如下:

对象名.成员名

注意:这里的“ . ”是一个运算符,该运算符的功能是表示对象的成员。

2).对象指针方式

对象声明形式中的对象名表,除了是用逗号运算符分隔的多个对象名外,还可以是对象名数组、对象名指针和引用形式的对象名。

声明一个对象指针:

CPerson *p;

但是想使用对象的成员,需要“->”运算符,它是表示成员的运算符,与“.”运算符的意义相同。“->”用来表示对象指针所指的成员,对象指针就是指向对象的指针,例如:

CPerson *p;
p->m_iIndex;

下面的对象数据成员的表示形式是等价的:
**对象指针名->数据成员 与 (对象指针名).数据成员
对象指针名->成员名(参数表) 与 (对象指针名).成员名(参数表)

例如:

 CPerson *p;
(*p).m_iIndex;
p->m_iIndex;

对象数组

1.对象数组

对象数组是指数组元素为对象的数组。该数组中若干个元素必须是同一个类的若干个对象。对象数组的定义、赋值和引用与普通数组一样,只是数组的元素与普通数组不同,它是同类的若干个对象,比如,张三、李四、王五都是人,那么其组成的数组即为对象数组。

一般来说,对象数组的定义格式如下:

<类名><数组名>[<大小>]…

其中参数说明如下:
<类名>:指出该数组元素是属于该类的对象。
<数组名>:定义该对象数组的名称,它必须是C++的标识符。
<大小>:广括号内的<大小>给出某一维的元素个数。一维对象数组只有一个方括号,二维对象数组要有两个方括号等。

2. 对象的存储和访问

C++建立和初始化对象的过程是由该类的构造函数来完成的。只要建立对象,构造函数马上就被调用,进行实例化和初始化工作。对象的实例化是指给对象的数据成员分配存储单元,对象的初始化是指给对象的数据成员赋初值的过程。

对象成员通常用“.”运算符进行访问。访问格式为:

对象名.数据成员名 或 对象名.成员函数名(〈实参表〉)

如:类Point的对象的成员的访问如下:

Point p1 ; // 定义Point类对象p1

p1 . x ; p1 . y ; // 访问p1对象的x成员和y成员

p1 . print( ) ; // 访问p1对象的成员函数

3.对象的生存期

正如普通变量有作用域与生存期,对象也有自己的作用域和生命期。而且对象作用域和生命期的规定基本上完全相同,区别在于对象在生命期开始时调用构造函数,在生命期结束时调用析构函数。

特别值得一提的是全局对象的定义。全局对象是在main()函数之外定义的对象,全局对象可以直接在类定义的同时定义,如:

class Clock{
…; //类定义体
}now;

也可单独定义,如:
Clock now;

然后才是 main()函数的定义。
全局对象的构造函数在main()函数执行之前被调用,析构函数在main()函数执行到最后的花括号(即程序退出)时被调用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值