gpt4 book ai didi

C++ With Initializer List 一个东西,什么时候使用普通构造函数?

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:10:38 24 4
gpt4 key购买 nike

我最近才开始回到 C++ 并学习了初始化列表。这似乎是初始化成员的标准方式。话虽如此,我对此有 2 个问题:

  1. 在设置私有(private)成员变量时是否有理由不使用此方法(并且只是在构造函数中使用老式设置)。

  2. 我们从中得到什么好处?有人告诉我“速度”,但不完全是为什么?

编辑:作为引用,我更具体地说是使用它们进行类初始化。

最佳答案

初始化列表就是调用成员变量的ctor。如果你赋值,你就是在使用赋值函数改变实例的值。显然,这两者是不同的功能。

在某些情况下,您无法为构造函数中的成员变量赋值。

  • 当成员变量为const时。
  • 当成员变量是无默认类的实例时负责人。
  • 当成员变量是引用时(同上)
  • 初始化基类

当你创建一个没有 init-list 的实例时,成员变量运行它的构造函数,然后如果你给它赋值则赋值。这是一个细微的差别,但它可能会招致一些惩罚,因为 ctor 首先运行,然后分配运行第二次 - 这是不必要的开销。

关于C++ With Initializer List 一个东西,什么时候使用普通构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56503689/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com