c++为什么构造函数中应该做的是初始化而不是赋值

介绍

本篇内容介绍了“C + +为什么构造函数中应该做的是初始化而不是赋值”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

<节> <节> <节>
C。49:构造函数中应该做的是初始化而不是赋值 <节> <节> <节> <节> <>部分原因(原因)

初始化明确地表明所做的是初始化而不是赋值,而且可以做得更优的美,更有效率。防止”赋值之前使用”的错误。

<节> <节> <节> <节> <>部分例子,好的(良好示例)
 <代码> A {,//好
,,字符串s1;公共:

,,(czstring p): s1 {p} {},,//好:直接构造(c字符串是显式命名)
,,//?br/>};
<节> <节> <节> <节> <>部分例子,坏(反面示例)
 <代码> B类{,//坏
,,字符串s1;公共:

,,B) (const char * p {s1=p;},//坏:默认构造函数赋值
紧随其后,,//?br/>};

C类{,//丑陋,又非常糟糕的
,,int * p;公众
:
,,C () {cout & lt; & lt;* p;p=new int {10};},//意外初始化之前使用
,,//?br/>};
<节> <节> <节> <节> <>部分例子,更好(更好的示例)

相对于那些const char *年代,我们应该可以使用gsl:: string_span或者(c++ 17引入的)std:: string_view作为<强>表达函数参数怒的更加普遍的方式。

 <代码>类D {,//好
,,字符串s1;公共:

,,(string_view v): s1 {v} {},,//好:直接构建
,,//?br/>};

c++为什么构造函数中应该做的是初始化而不是赋值