簡體   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