找回密码
 立即注册
  • QQ空间
  • 回复
  • 收藏

C++对象的定义

admin 2020-2-27 07:28 114人围观 C++相关

C++对象的定义


资料来自:
中国大学mooc(西北工业大学c++程序设计课程)

定义一个类时,也就是定义了一个具体的数据类型。若要使用类,需要将类实例化,即定义该类的对象。
一、先定义类类型再定义对象
有两种定义对象的形式:

  1. 将类的名字直接用作类型名:
类名 对象名列表;

  1. 指定关键字class或struct,后面跟着类的名字:
class 类名 对象名列表;

struct 类名 对象名列表;

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

二、定义类类型的同时定义对象
一般形式为:
class 类名{//类体
      成员列表
}对象名列表;

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

三、直接定义对象
一般形式为:
class{//类体
     成员列表
}对象名列表;

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

注意:一般而言,定义类型时不进行存储空间的分配,当定义一个对象时,将为其分配存储空间
当我们想要用到对象时才创建(create)对象,在不需要用该对象时就撤销(destroy)它,释放其所占的存储空间,从而提高存储空间的利用率。

利用new运算符可以动态地分配对象空间,delete运算符释放对象空间。
动态分配对象的一般形式为:
类名 * 对象指针变量;
对象指针变量=new 类名;

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

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

当不再需要使用由new建立的动态对象时,必须用delete运算予以撤销。例如:
delete p;//撤销p所指向的Point对象

释放了p所指向的对象。此后程序不能再使用该对象。
new建立的动态对象不会自动被撤销,即使程序运行结束也是如此,必须人为使用delete撤销。
例:
#include<iostream>
using namespace std;
class Box
{
    public:
     int width,length,height;
};
int main()
{
    Box *p=new Box;
    p->width=10;p->length=20;p->height=30;
    cout<<p->width<<"\t"<<p->length<<"\t"<<p->height<<endl;
    delete p;
    return 0;
}

Linux命令:
rmdir命令删除空的目录
rmdir [-p] dirName
-p 是当子目录被删除后使它也成为空目录的话,则顺便一并删除。




----------------------------------------------------------------------------------------------------------------------
我们尊重原创,也注重分享,文章来源于微信公众号:高二,建议关注公众号查看原文。如若侵权请联系qter@qter.org。
----------------------------------------------------------------------------------------------------------------------

鲜花

握手

雷人

路过

鸡蛋

yafeilinux和他的朋友们微信公众号二维码

微信公众号

专注于Qt嵌入式Linux开发等。扫一扫立即关注。

Qt开源社区官方QQ群二维码

QQ交流群

欢迎加入QQ群大家庭,一起讨论学习!

我有话说......