請注意如下例子是否有問題c++
class Apple { public: Apple(char ch, int count) : array(count, 1), buffer(count, ch) {} private: std::string buffer; std::vector<int> array; };
g++ 4.8.4
使用-Wall -std=c++11
編譯時,會出現一個警告,內容以下c++11
xxx.cpp:11:15: warning: ‘Apple::buffer’ will be initialized after [-Wreorder]
出現這個警告的緣由是由於初始化的順序和類成員聲明的順序不同(在某些不推薦的狀況下,類成員的初始化可能含有依賴關係),作以下改變就好了code
Apple(char ch, int count) : buffer(count, ch), array(count, 1) {}
或者在編譯參數中打開-Wno-reorder
string