【c++】构造函数提高篇(带你精通构造函数!)

Hello,everybody!这是我第三篇关于构造函数的文章,也是最后一篇。这足以看出构造函数的知识点很多,感觉很杂乱,难度也不小。构造函数是类中六大默认成员函数中最复杂的一个,所以想要学会,需静下心,多动手,仔细理解,体会。

这篇文章有点难度,我建议先看我前两篇关于构造函数的文章,然后再看这篇会好理解很多!

1.语法:隐式转换

第一个直接调用构造函数。

第二个:单参数构造函数支持隐式类型转换。

用2先构造一个A的临时对象,然后再拷贝构造给_bb。(有时不会调用拷贝构造->编译器优化了,同一个表达式连续步骤的构造,一般会合二为一)

第二个和:int i=2;double j=i;一样。中间会产生一个临时变量。

还有这两种写法可以做对比,它们引用的都是临时对象,临时对象具有常性,全都要加const!

2.该语法的具体运用

这种栈的插入方式更加方便,不需要再构造一个类的对象插入。

如果不想让隐式类型的转换发生,可以在构造函数前面加一个关键字:explicit

如果是多参数的类,就需要用到花括号。

有了多参数的构造的语法后,各种各样奇怪的语法都出来了!

3.构造函数的一个典型题目

先思考一下,构造完成后,成员变量_x与_y的值分别是多少?

这时调试的结果,_y的值正常,_x的值为随机值。

因为初始化列表初始化的顺序不是初始化列表中的顺序,而是成员变量声明的顺序。

_x先声明_y后声明,所以先初始化_x,后初始化_y。

4.static成员

用static修饰的对象属于整个类,不能在初始化列表中初始化,当然也不能给缺省值,应该在全局域中初始化。

如果我把i该为公有,这样用空指针去访问i也是没有任何问题的!

因为i在静态区,并不是真正意义上的p的成员变量。我们的写法看似在对空指针解引用,但在底层上指针p并没有解引用,而是直接去静态区访问i。

并且如果是公有的话,这三种访问方式都是可以的!

但如果是私有的话就都不行了。

但一般情况下,i都会设置成私有的,这时我们可以写一个公有的成员函数来访问。

当然也可以写一个用static修饰过的成员函数,这个函数的特点就是没有this指针。

没有this指针就意味着不能访问普通的成员变量,只能访问静态的成员变量。

最后就是静态成员函数的访问有如上两种方式。

5.总结

关于构造函数细碎的知识有很多,建议大家反复阅读学习,多动手敲代码!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

崽崽..

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值