C++中构造函数创建对象

1、 C++中构造函数的调用方式主要分为两类:

1)显示调用:

eg: Stock food = Stock("360",250,2.5);

2)隐式调用;

eg:Stock food("360",250,2.5);

注意:显示调用构造函数大多编译器理解为对food进行初始化,这也是最正确的理解方式,因此直道food所在的作用域到达尽头,才调用析构函数进行清理;而有的编译器将Stock food = Stock("360",250,2.5;理解为:先创建一临时对象,然后将其赋值给food,然后在删除临时对象。如果是这样,则会调用一次析构函数,对对象进行清理。这种创建方式和 food = Stock("360",250,2.5比较相似,即对food进行复位。

C++11新标准,增添了对象的列表初始化:

eg:Stock food = {"360",250,2.5};

eg:Stock food {"360",250,2.5};

2、 默认构造函数:

默认构造函数分为三类:

1)声明类时,程序员不声明任何构造函数,则编译器为该类增添一不含任何参数的构造函数,该构造函数也不对该类的任何成员变量进行初始化,即:成员变量的值未被初始化。

2) 声明类时,程序员声明一个不含参数的构造函数,该构造函数可以对类成员变量进行默认初始化;

3)声明类时,程序员声明一个含默认参数的构造函数,那么定义对象时成员变量将被默认参数初始化;

注意:只有在程序员不声明任何构造函数的情况下,编译器才会为类增添一个不含任何参数的默认构造函数,如果程序员偷懒,定义对象时:Stock food;则编译器将报错,因此为了编译成功,程序员最好为类增添一个隐式初始化的默认构造函数。若添加两个默认构造函数,则在调用默认构造函数初始化对象时会出错,编译器不知道调用哪一个。

3、默认构造函数的调用:

eg: Stack food;

eg: Stack food();//典型错误方法

eg:Stack food = Stack();

默认构造函数写法最简单,因此程序员最好为类增添一个默认构造函数啊!

4、复制构造函数

当时用一个对象类初始化另一个对象时,编译器将自动生成复制构造函数。该函数将生成一个副本对象,并将该副本对象中的非静态数据成员拷贝给要初始化的对象,因此,忽视了对静态成员的处理,容易引发难以检查的错误。

eg: Stock food = Stock("360",250,2.5);

将调用复制构造函数,对food进行复制初始化。

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值