前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C++随记(十)--类与对象(2)

C++随记(十)--类与对象(2)

作者头像
TeeyoHuang
发布2017-12-28 14:41:26
5740
发布2017-12-28 14:41:26
举报

C++随记(十)--类与对象(2)

1、  类的构造函数

类的数据成员是不能在声明类的时候初始化的!因为类不是一个实体,是一种抽象类型,并不占存储空间。C++为我们提供了一个特殊的成员函数---类构造函数,专门用于构造新对象,来处理对象的初始化问题

这个成员函数不需要用户来调用它,而是在建立对象的时候自动执行。

一般构造函数都如下方式进行定义(名称与类名相同):

比如有一类 Country,那么其构造函数可以定义为:

Country::Country()

{

对成员赋初值的操作…

} 可以在类中定义,也可以在类外定义。但一定要在类中进行声明

还可以定义带参数的构造函数,在调用不同对象的构造函数时,从外面将不同的传递给构造函数,以实现不同的初始化:

比如可以在类中声明两个不同的构造函数:

public:

Country(); //这个一般叫做默认构造函数,它不包含任何参数,一个类中只能有一个默认构造函数

Country( int area; int population);//通过函数重载来实现另一个构造函数

另外,在定义含参数的构造函数时,可以将它设置为参数初始化列表来对成员进行初始化。这种方法不在函数体内对数据成员进行初始化,而是在函数首部。

2、  析构函数

析构函数的作用与构造函数相反,析构函数并不是删除对象,而是在撤销对象占用的内存之前完成一些清理工作。析构函数无返回值,无函数类型,无任何参数。不能被重载。所以一个类可以有多个构造函数但是有且只能有一个析构函数。

定义一般如下(函数名是类型名前面添一个 ~):

Country:: ~Country()

{

}

可以将其编写为不执行任何操作,函数会自动在合适的时候调用它。

当然也可以在其中编写最后一次使用对象之后想要执行的一些操作,比如输出啊什么的。

3、  构造函数和析构函数的顺序

有这么一句话: ”先构造的后析构,后构造的先析构”。大方向是对的但是也不全对,要具体分析

(1)定义的全局对象,它的构造函数在所有函数(包括main)执行之前调用。当main执行完毕,或执行exit函数时,才调用析构函数。

(2)如果调用的是局部自动对象,则建立对象时调用构造函数。在函数调用结束,对象释放时调用析构函数。

(3)如果在函数中调用静态(static)局部对象,则只在程序第一次调用此函数建立对象时调用构造函数一次,函数调用结束时,对象并不释放,也不调用析构函数。只在main函数或调用exit函数结束时,才调用析构函数。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-07-12 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • C++随记(十)--类与对象(2)
    • 1、  类的构造函数
      • 2、  析构函数
        • 3、  构造函数和析构函数的顺序
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档