1 #include <iostream> 2 #include <array> 3 4 class Circle 5 { 6 private: 7 double r = 1.0;//类成员同时有就地初始化和构造函数列表初始化,则就地初始化忽略 8 public: 9 Circle() = default;//强制编译器,无参构造函数 10 Circle(double r){this->r = r;}//有参构造函数 11 double getArea() 12 { 13 return 3.14*r*r; 14 } 15 }; 16 int main() 17 { 18 double TotalArea = 0.0; 19 //用default,编译了无参构造函数才添加进去,所以调试,看不到调用无参构造函数 20 std::array<Circle,10> CircleArray = {1.0,2.0,3.0,4.0,5.0}; 21 22 for ( auto it = CircleArray.begin(); it != CircleArray.end(); ++it ) 23 { 24 TotalArea += (*it).getArea(); 25 } 26 std::cout<<TotalArea<<std::endl; 27 return 0; 28 }
https://zh.cppreference.com/w/cpp/container/array
初始化 / 赋值优先级: 在构造函数体中为成员赋值 > 构造函数初始化列表 > 类成员就地初始化