使用統一的初始化在代碼下面給出我得到一個錯誤消息「沒有 默認構造函數」。那就是爲什麼我不能用統一 初始化器。是規定必須有默認的構造函數在C++中
當我做了一個默認的構造函數,然後我得到一個關於大括號的錯誤。
請重點關注此程序和統一的initiallizer的問題。
我使用VS 2012和C++
class Circle {
double radius;
public:
Circle(double r) { radius = r; }
double circum() {return 2*radius*3.14159265;}
Circle() {
cout<<"ALI \n ";
}
};
int main() {
Circle baz {30.0}; // uniform init.
Circle qux{};
cout << "foo's circumference: " << baz.circum() << '\n';
cout<<endl;
return 0;
}
沒有默認構造函數 –
我不明白。你仍然可以使用統一的初始化,而不需要默認的構造函數,就像創建'baz'時一樣。當然,如果你沒有默認的構造函數,那麼'{}'不起作用。 – chris
這很好,但我正在使用Vs 2012。 根據#sharth,我們不能在VS 2012中使用它。 –