C++基础(和类有关2)对象的定义

来源:互联网 发布:淘宝女鞋推荐 编辑:程序博客网 时间:2024/05/16 11:38

一 对象的定义
定义一个类时,也就是定义了一个具体的数据类型。若要使用类, 需要将类实例化,即定义该类的对象。
1.先定义类类型再定义对象
有两种定义对象的形式:
①将类的名字直接用作类型名:
类名 对象名列表
②指定关键字class或struct,后面跟着类的名字:

    class  类名  对象名列表;    或     struct  类名  对象名列表;

对象名列表是一个或多个对象的序列,各对象之间用逗号(,)分隔,最后必须用分号(;)结束,对象取名必须遵循标识符的命名规则。例如
Point a,b; ; //C++ 特色定义对象
class Point x,y; ; // 兼容C C 语言特色定义对象
2.定义类类型的同时定义对象
一般形式为:

class 类名  {  // 类体成员列表}  对象名列表 ;

例如:

class  Point {  // 类体public: : … … // 公有的数据成员和成员函数private: : … … // 私有的数据成员和成员函数} one , two;  //对象列表

3.直接定义对象
一般形式为:

class {  // 类体成员列表}  对象名列表 ;

例如:

class  {  // 无类名类体public: … … // 公有的数据成员和成员函数private: … … // 私有的数据成员和成员函数} p1 , p2; // 对象列表

二 对象的动态建立和释放
有时人们希望在需要用到对象时才创建(create)对象,在不需要用该对象时就撤销(destroy)它,释放其所占的存储空间,从而提高存储空间的利用率。 利用new运算符可以动态地分配对象空间,delete运算符释放对象空间。
动态分配对象的一般形式为:
类名 * 对象指针变量;
对象指针变量 = new 类名;
例如:

Point *a;//定义指向Point对象的指针变量a=new Point;//动态分配Point对象

用new运算动态分配得到的对象是无名的,它返回一个指向新对象的指针的值,即分配得到是对象的内存单元的起始地址。程序通过这个地址可以间接访问这个对象,因此需要定义一个指向类的对象
的指针变量来存放该地址。显然,用new建立的动态对象是通过指针来引用的。 在执行new运算时,如果内存不足,无法开辟所需的内存空间,C++编译器会返回一个0值指针。因此,只要检测返回值是否为0,
就可以判断动态分配对象是否成功,只有指针有效时才能使用对象指针。
当不再需要使用由new建立的动态对象时,必须用delete运算予以撤销。例如:

delete p ;//撤销p所指的Point对象

释放了p所指向的对象。此后程序不能再使用该对象。new建立的动态对象不会自动被撤销,即使程序运行结束也是如此,必须人为使用delete撤销。
这里写图片描述

原创粉丝点击