【C++】類成員初始化小細節

Problem

請注意如下例子是否有問題c++

class Apple {
    public:
        Apple(char ch, int count) : array(count, 1), buffer(count, ch) {}
    private:
        std::string buffer;
        std::vector<int> array;
};

Warning

g++ 4.8.4使用-Wall -std=c++11編譯時,會出現一個警告,內容以下c++11

xxx.cpp:11:15: warning: ‘Apple::buffer’ will be initialized after [-Wreorder]

Conclude

出現這個警告的緣由是由於初始化的順序和類成員聲明的順序不同(在某些不推薦的狀況下,類成員的初始化可能含有依賴關係),作以下改變就好了code

Apple(char ch, int count) : buffer(count, ch), array(count, 1) {}

或者在編譯參數中打開-Wno-reorderstring

相關文章
相關標籤/搜索