我正在从C转向C++,我没有得到这个类的创建

Tsa*_*doq 2 c++ class

我是一名C开发人员,我决定转向使用c ++作为主要语言来扩大我的视野.从"C++编程语言"学习我看到了这个创建类的例子:

class Vector {
public:
    Vector(int s) :elem{new double[s]}, sz{s} { }
    double& operator[](int i) { return elem[i]; }
    int size() { return sz; }
private:
    double* elem;
    int sz; 
};
Run Code Online (Sandbox Code Playgroud)

我没有使用sz {s} {}

我们为什么要用{}?为什么没有;最后一行?

rod*_*igo 7

因为懒惰的缩进.让我们更清楚地写一下:

class Vector
{
private:
    double* elem;
    int sz; 
public:
     Vector(int s)
         : elem{new double[s]}
         , sz{s}
     {
         // ctor body
     }

     // More class members
};
Run Code Online (Sandbox Code Playgroud)

看到?你的神秘{}只是构造函数的主体,它只是一个函数体,而在C中,函数不以a结尾;.

奇怪的行开头 :初始化列表,其中初始化成员变量和基类,即将构造函数写入其构造函数的位置.这sz{s}只是此列表中的第二个元素.