当前位置:   article > 正文

你应该立即掌握的10个现代C++新特性

c++新特性

 你应该立即掌握的10个现代C++新特性_哔哩哔哩_bilibili

委托构造函数

一个委托构造函数使用它所属类的其他构造函数执行它自己的初始化过程, 在委托构造函数内,成员初始值列表只有一个唯一的入口, 就是类名本身(就是同类的其他构造函数的类名)。 类名后面的参数列表必须与类中另外一个构造函数匹配。

  1. class Date
  2. {
  3. public:
  4. //非委托构造函数使用对应的实参初始化成员
  5. Date(int year, int month, int day)
  6. :_year(year)
  7. , _month(month)
  8. , _day(day)
  9. {
  10. cout << "带三个参数的构造函数被调用!" << endl;
  11. }
  12. //其余构造函数全都委托给另一个构造函数
  13. Date() :Date(1990, 1, 1)
  14. {
  15. cout << "默认构造函数被调用!" << endl;
  16. }
  17. Date(int year) :Date()
  18. {
  19. cout << "带一个构造函数被调用!" << endl;
  20. }
  21. void show()
  22. {
  23. cout << "分别输出它们的值:" << _year << " " << _month << " " << _day << endl;
  24. }
  25. private:
  26. int _year;
  27. int _month;
  28. int _day;
  29. };
  30. int main()
  31. {
  32. Date myDate;
  33. myDate.show();
  34. cout << endl;
  35. Date myDate1(2018);
  36. myDate1.show();
  37. cout << endl;
  38. Date myDate2(2018,6,21);
  39. myDate2.show();
  40. system("pause");
  41. return 0;
  42. }
  43. 输出结果为:
  44. 带三个参数的构造函数被调用!
  45. 默认构造函数被调用!
  46. 分别输出它们的值:1990 1 1
  47. 带三个参数的构造函数被调用!
  48. 默认构造函数被调用!
  49. 带一个构造函数被调用!
  50. 分别输出它们的值:1990 1 1
  51. 带三个参数的构造函数被调用!
  52. 分别输出它们的值:2018 6 21

直接初始化

 

 枚举类型可以有效避免类型冲突

auto关键字

 

 

使用make_unique来替代new,这样如果在SomeData的构造函数中抛出了任何异常,我们也不会得到一个野指针

 

 

 

v

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/在线问答5/article/detail/765364
推荐阅读
相关标签
  

闽ICP备14008679号