有人能解释一下这个C++语法吗
Could someone explain this C++ syntax?
可能重复:
构造函数中这种奇怪的冒号成员语法是什么?
嗨,我最近在一个C++程序中遇到了这个语法。这不是向基类构造函数传递参数,因为我知道它看起来是什么样子以及如何编码。这看起来像是类的某种变量初始化。。。这是代码:
class Particle
{
private:
bool movable;
float mass;
Vec3 pos;
Vec3 old_pos;
Vec3 acceleration;
Vec3 accumulated_normal;
public:
Particle(Vec3 pos)
: pos(pos),
old_pos(pos),
acceleration(Vec3(0,0,0)),
mass(1),
movable(true),
accumulated_normal(Vec3(0,0,0))
{}
Particle() {}
// More unrelated code
};
正如您所推测的,这是成员初始化的语法。对比一下:
class C
{
private:
int i;
public:
C(int i_) : i(i_) {} // initialization
};
带有:
class C
{
private:
int i;
public:
C(int i_) { i = i_; } // assignment
};
通常最好初始化成员,而不是在构造函数体中分配给它们,而且在某些情况下这是必不可少的(例如引用(。
相关文章:
- 1d 智能指针不适用于语法 (*)++
- 助记符和指向成员语法的指针
- 有人能分解一下这个c++模板的语法吗
- C++避免重复声明的语法是什么
- QMetaObject invokeMethod的基于函数指针的语法
- 这个语法std::class<>{}(arg1, arg2) 在C++中是什么意思?
- 为什么包含windows.h会产生语法错误,从而阻止类的实例化?(C2146,C2065)
- 单独定义模板化嵌套类方法的正确语法
- 共享指针和具有自定义删除程序的唯一指针之间的语法差异背后的任何原因
- 错误 C2760:语法错误:映射迭代器上意外的标记"标识符",预期的";"
- 为什么我会收到错误 C2143 语法错误:缺少"*"之前的';'?
- 奇怪的代码抛出编译错误模板< J,int aSize=10> C2143:语法错误:在"<"之前缺少";"
- 使用基类指针调用基类的值构造函数的语法是什么?
- 很好的语法来获取对向量/数组数据的大小引用?
- C++语法运算符功能?
- C++使用 rand 定义函数语法
- 什么文件可以修改 atom 的C++语法?
- 创建模板嵌套类实例的语法?
- C++语法差异:二维和一维数组(指针算术)
- 将信息输入到下面显示的结构向量中的正确语法/格式是什么