初始化列表的优点及其效率
初始化列表以其在初始化非内置类型的类成员方面的效率而闻名。与传统初始化方法相比,该技术具有多个优点。
在提供的示例 Fred::Fred(): x_(whatever) {} 中,编译器直接在成员变量 x_ 内部构造表达式的结果,避免不必要的复制和对象构造。这消除了替代方法 Fred::Fred() { x_ =whatever; 中与临时对象创建和销毁相关的性能损失。 }.
但是,在您提到的具体情况下,使用以下类:
class MyClass { public: MyClass(string n):name(n) { } private: string name; };
与替代方案相比:
class MyClass { public: MyClass(string n) { name=n; } private: string name; };
没有显着的效率使用初始化列表的好处。在这种情况下,第二个版本调用字符串类的默认构造函数,然后调用其复制赋值运算符,与第一个版本相比,这可能会导致较小的效率损失。
建议始终使用推荐的初始化列表方法,以确保代码正确性并保持可读性,即使在可能没有明显性能优势的情况下也是如此。
以上是什么时候使用初始化列表可以在 C 语言中提供显着的性能优势?的详细内容。更多信息请关注PHP中文网其他相关文章!