这个 C++ 语法是什么意思?
What does this C++ syntax means?
我正在尝试了解 cpp 代码的内部工作原理。
我关注的部分由 2 个 .cpp / .h 组成。
Base class 称为电离。
Derived class 称为 IonizationTunnel。
在 IonizationTunnel.cpp 我看到了以下内容:
#include "IonizationTunnel.h"
IonizationTunnel::IonizationTunnel( Params ¶ms, Species *species ) : Ionization( params, species ) {
code
code which uses params and species
code
}
我知道这是关于 IonizationTunnel 构造函数 IonizationTunnel(Params ¶ms, Species *species) 的,它需要用它的 ''prefix'' IonizationTunnel:: 来写,这样很明显它来自 IonizationTunnel class.
我不明白 : Ionization() 结束位。它是对 Base class 构造函数的调用吗?如果是这样,为什么它在那里,为什么不写成 :Ionization{params, species}?
谢谢!
是的,它叫做成员初始值设定项列表。这是唯一可以调用基本构造函数的地方,没有像 Java 或 Python.
中那样的 super()
()
和{}
都可以初始化:前者进行“直接初始化”,后者进行“直接列表初始化”。
他们的行为有时会有所不同。例如。 vector<int> v(1, 2)
创建单个元素的向量 (2),而 vector<int> v{1, 2}
创建两个元素的向量。
()
更常用于构造基 类,因为它早在 C++11 之前就存在了。在 C++20 之前,它的行为也不那么模糊:它只能调用基类构造函数。
我正在尝试了解 cpp 代码的内部工作原理。 我关注的部分由 2 个 .cpp / .h 组成。 Base class 称为电离。 Derived class 称为 IonizationTunnel。
在 IonizationTunnel.cpp 我看到了以下内容:
#include "IonizationTunnel.h"
IonizationTunnel::IonizationTunnel( Params ¶ms, Species *species ) : Ionization( params, species ) {
code
code which uses params and species
code
}
我知道这是关于 IonizationTunnel 构造函数 IonizationTunnel(Params ¶ms, Species *species) 的,它需要用它的 ''prefix'' IonizationTunnel:: 来写,这样很明显它来自 IonizationTunnel class.
我不明白 : Ionization() 结束位。它是对 Base class 构造函数的调用吗?如果是这样,为什么它在那里,为什么不写成 :Ionization{params, species}?
谢谢!
是的,它叫做成员初始值设定项列表。这是唯一可以调用基本构造函数的地方,没有像 Java 或 Python.
中那样的super()
()
和{}
都可以初始化:前者进行“直接初始化”,后者进行“直接列表初始化”。
他们的行为有时会有所不同。例如。 vector<int> v(1, 2)
创建单个元素的向量 (2),而 vector<int> v{1, 2}
创建两个元素的向量。
()
更常用于构造基 类,因为它早在 C++11 之前就存在了。在 C++20 之前,它的行为也不那么模糊:它只能调用基类构造函数。