繁体   English   中英

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

[英]I'm moving from C to C++ and I don't get this creation of a 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; 
};

我没有使用sz {s} {}

为什么我们使用{} 为什么没有; 在行尾?

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

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

     // More class members
};

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

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

最后一个{}是构造函数的主体。 方法不需要; 在末尾。 之前的东西是初始化列表:

Vector(int s) :elem{new double[s]}, sz{s} { }
            // ^^ initializer list        ^^ body of the constructor

这也可以写成

Vector(int s) {                 // no initializer list, but still 
                                // members are initialized here already
    elem = new double[s];
    sz = s;
}                               // no ; here  !!

但随后会对该成员进行初始化,然后分配一个值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM