我该如何解释这个C++代码?

cod*_*ons 1 c++

NetworkManager::NetworkManager():m_Thread(0), m_Continue(true), m_Init(false){
}
Run Code Online (Sandbox Code Playgroud)

第一个是名称空间,第二个是函数的名称.那三个参数是什么?我认为它可能与继承有关,但那些不是类名.这些是私人变量.

提前致谢.

小智 12

这是构造函数的定义 - 没有名称空间.

NetworkManager :: NetworkManager() : m_Thread(0), m_Continue(true), m_Init(false){
}
Run Code Online (Sandbox Code Playgroud)

构造函数用于名为NetworkManager的类,它使用初始化列表初始化其成员.发生的事情在概念上(如果不完全准确):

 NetworkManager :: NetworkManager() {
      create "empty" NetWorkManager object
      initialise its m_Thread with zero
      set its m_Continue to be true
      set its m_Init to be false
 }
Run Code Online (Sandbox Code Playgroud)

然后使用构造函数创建一个完全初始化的对象:

NetworkManager manager;
Run Code Online (Sandbox Code Playgroud)

像这样的初始化优于构造函数体中的赋值,原因如下:

  • 许多类型不支持赋值
  • 它通常更有效率
  • 它消除了构造函数代码的其余部分中未初始化对象的可能性

  • @LCYSoft:因为当你将它们放在构造函数体中时,成员变量将被默认初始化,然后将值分配给它们.对于某些数据类型,这比简单地立即初始化它们效率低.更重要的是,有些数据类型需要*使用`ctor-initializer`语法来初始化它(例如,当你需要将参数传递给成员变量的构造函数,`const`成员等)时. (3认同)