C++构造函数——概念性的东西+自己的理解

1.构造函数主要用来创建对象时完成对象属性初始化的一系列操作,当创建对象时,对象会自动调用它的构造函数。

一般来说,构造函数有三个作用:

  • 给创建的对象建立一个标识符
  • 为对象数据成员开辟内存空间
  • 完成对象数据成员的初始化
2.当用户没有显示的去定义构造函数时,编译器会为类生成一个默认的构造函数,称为“默认构造函数”,默认构造函数不可以完成对象数据成员的初始化,只能给对象创建一个标识符,并为对象中的数据成员开辟一定的内存空间。

3.在大多数情况下,在对象创建完成之后,我们需要对一些成员进行初始化,默认的构造函数无法满足,所以需要显示定义一个构造函数来覆盖掉默认的构造函数来完成初始化的工作,当用户自定义构造函数后,编译器就不会再为对象生成默认的构造函数。构造函数的名称与类名相同,并且没有返回值类型和返回值。

4.显示构造函数的定义可以在类内或类外进行。

5.对于有参数的构造函数可以利用传入的函数对成员属性进行初始化

6.构造函数的初始化可以在构造函数的函数头后面通过单个冒号:引出的就是初始化表。

  Point(int x = 0, int y = 0):xPos(x), yPos(y)  // 使用初始化表
7.析构函数。

与构造函数相反,析构函数是在对象被撤销时自动调用,用于对成员撤销的一些清理工作,析构函数名与类名相同,紧贴在名称前面用波浪号~与构造函数进行区分,析构函数没有返回类型,也不能指定参数,析构函数只有一个,不能被重载。当对象被销毁时析构函数被自动调用,析构函数可以被显示的调用,以释放对象中动态申请的内存。

当用户没有显示定义析构函数时,编译器同样会为对象生成一个默认的析构函数,但是默认生成的析构函数只能释放类的普通数据成员所占的空间,无法释放通过new或malloc进行申请的空间,因此有时候我们需要自己显示的定义析构函数对这些申请的空间进行释放,避免造成内存泄漏。

参考 http://www.cnblogs.com/mr-wid/archive/2013/02/19/2917911.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值