介绍
C。49:构造函数中应该做的是初始化而不是赋值节> 节> 节> <节> <节> <节> <节> <>部分原因(原因)节> 节> 节> 节> 节>
本篇内容介绍了“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/>}; 代码>