构造函数

C++的类有多种构造函数,分别起不同的作用,不同的操作会执行不同的构造函数,具体来说有以下几种:

1、默认构造函数。

2、拷贝构造函数(也叫复制构造函数)。

3、带参数构造函数。

4、移动构造函数。

 

下面分别说说这这几种构造函数:

1、默认构造函数。默认构造函数也就是无参数构造函数,或者有参数,但是所有的参数都提供了默认值。

如果类中不存在任何的构造函数,编译器将会为类自动提供一个默认构造函数,如果声明一个新的类对象,但是没有提供任何的参数,那么默认构造函数被调用。

如果类中已经存在带参数的非默认构造函数,除非类作者自己编写,否则编译器将不会为类提供默认构造函数,当时在声明新的类对象的时候,必须带初始化参数来声明。

2、拷贝构造函数。就是用已有对象初始化新建对象的构造函数,也就是参数为同类对象本身的构造函数,原型为:Class_name(const Class_name &);对于这种构造函数有两点需要清楚:

何时调用:新建一个对象并将其初始化为同类的现有对象时,拷贝构造函数都将被调用。函数按值传递对象和返回对象的时候,也将调用拷贝构造函数,因为生成了对象的临时副本。

如果类中不存在拷贝构造函数,编译器也将生成默认的拷贝构造函数,默认拷贝构造函数逐个复制非静态成员,复制的是成员的值。这种复制方式也称为浅复制。

有何功能:可以在拷贝构造函数中对对象进行深度复制。所以如果类中包含了使用new初始化的指针成员,应该定义一个显式的拷贝构造函数,以复制指针指向的数据。

 

 

 

另外备忘:C++会自动为类添加一下成员函数:

1、默认构造函数,如果没有定义任何的构造函数。

2、默认析构函数,如果没有定义。

3、拷贝构造函数,如果没有定义。

4、赋值运算符(=),如果没有定义。

5、地址运算符,如果没有定义。

 

转载于:https://www.cnblogs.com/winson/archive/2013/03/01/2938403.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值