构造函数中的初始化列表与赋值
在 C 中,在构造函数中初始化类成员有两种常见方法:使用成员初始化列表或直接在构造函数中赋值。虽然语法不同,但代码生成和使用场景可能存在细微差别。
成员初始值设定项列表
成员初始值设定项列表是用逗号分隔的成员初始化列表它位于构造函数中冒号 (:) 之后。在您提供的示例中:
MyClass::MyClass(): _capacity(15), _data(NULL), _len(0) { }
这会使用指定的值初始化三个成员变量 _capacity、_data 和 _len。此语法适用于初始化常量成员、引用和基类构造函数。
构造函数中的赋值
在替代方法中,您可以为内部的成员变量赋值构造函数主体:
MyClass::MyClass() { _capacity=15; _data=NULL; _len=0 }
此语法更常见于初始化非常量成员
代码生成和优化
编译器通常会为这两种方法生成优化的代码。在大多数情况下,生成的汇编代码是相同的。但是,在极少数情况下,在初始化常量成员或设置默认值时,使用成员初始值设定项列表可以产生更高效的代码。
使用场景
如上所述,初始化常量成员、引用和基类构造函数需要成员初始值设定项列表。对于其他成员变量,任何一种方法都是可以接受的。但是,使用成员初始值设定项列表来初始化具有重要构造或初始化要求的成员变量被认为是最佳实践。
在示例的特定情况下,使用成员初始值设定项列表或在构造函数没有实际区别。
以上是C 构造函数中的成员初始值设定项列表与赋值:何时应该使用哪个?的详细内容。更多信息请关注PHP中文网其他相关文章!