初始化列表与构造函数分配:内部和代码差异
在给定的 C 代码中,有一个关于使用成员初始值设定项列表并在构造函数中赋值。
成员初始值设定项List
成员初始值设定项列表,括在构造函数名称后面的括号中,用于初始化:
构造函数赋值
构造函数赋值,另一方面,用于初始化非常量成员并将值分配给非引用变量。
内部差异
在内部,两种方法生成的代码略有不同。使用成员初始值设定项列表时,编译器在构造期间将成员值直接放入类对象中。这可以避免额外的赋值操作。
代码差异
比较给定的代码片段:
MyClass::MyClass() : _capacity(15), _data(NULL), _len(0) { }
MyClass::MyClass() { _capacity = 15; _data = NULL; _len = 0; }
两个片段都会初始化三个具有指定值的私有成员 _capacity、_data 和 _len。但是,第一个代码段使用成员初始值设定项列表,而第二个代码段使用构造函数分配。
何时使用成员初始值设定项列表
必须使用初始化列表:
对于标准初始化(非常量成员、非引用),可以使用任一方法。一般来说,出于效率原因,成员初始值设定项列表是首选。
以上是成员初始化列表与构造函数分配:什么时候应该使用哪个?的详细内容。更多信息请关注PHP中文网其他相关文章!