经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » C » 查看文章
C++ 11
来源:cnblogs  作者:Kernel001  时间:2018/11/13 9:44:20  对本文有异议

---恢复内容开始---

C++11 新特性 借鉴于 https://www.cnblogs.com/feng-sc/p/5710724.html

C++  2011/2014 统称 C++2.0

1.auto关键字

  auto这个关键字,是一个自动检测类型的关键字,当类型很复杂时,无法确定变量/参数类型时,可以使用该auto关键字

2.NULL 和 nullptr 区别

  就是指在C++2.0之前定义的NULL 的定义是  #define NULL 0   这是他的原型,实际使用的时候实际时传入的确是NULL,而类型缺是指针

而nullptr的引入会减少NULL调用错误 

  1. class Test
  2. {
  3. public:
  4. void TestWork(int index)
  5. {
  6. std::cout << "TestWork 1" << std::endl;
  7. }
  8. void TestWork(int * index)
  9. {
  10. std::cout << "TestWork 2" << std::endl;
  11. }
  12. };
  13.  
  14. int main()
  15. {
  16. Test test;
  17. test.TestWork(NULL);
  18. test.TestWork(nullptr);
  19. }

3. for 循环

C++ 11 中增加了auto,还加强了for循环,并还引入了for each语句

第一种for:

  1. int main()
  2. {
  3. int numbers[] = { 1,2,3,4,5 };
  4. std::cout << "numbers:" << std::endl;
  5. for (auto number : numbers)
  6. {
  7. std::cout << number << std::endl;
  8. }
  9. }

第二种for each:

  1. #include <array>
  2. #include <iostream>
  3. #define __TEXT
  4.  
  5. int main()
  6. {
  7. #ifdef __TEXT
  8. //c++11 code
  9. std::array<int, 4> arraydemo = { 1,2,3,4 };
  10. std::cout << "arraydemo:" << std::endl;
  11. for each(auto itor in arraydemo)
  12. {
  13. std::cout << itor << std::endl;
  14. }
  15. int arraydemosize = sizeof(arraydemo);
  16. std::cout << "arraydemo size:" << arraydemosize << std::endl;
  17. #endif
  18. #ifndef _ARRAY__
  19. int nums[] = {1,2,3,4,5,6};
  20. for each(auto num in nums)
  21. {
  22. std::cout << num << std::endl;
  23. }
  24. #endif
  25. getchar();
  26. return 0;
  27. }

4.STL 容器补充

5.Thread ---引入boost::thread库 (头文件<thread>)

  ——>thread:

  ——>atomic 类型:

  ——>condition_variable:

6.std::function std::bind (头文件functional)

  由Boost库引用而来,可以与lambda表达式混合使用

  

  1. void Add(std::function<int(int, int)> fun, int a, int b)
  2. {
  3. int sum = fun(a, b);
  4. std::cout << "sum:" << sum << std::endl;
  5. }
  6. function<int(int,int)>

  function是对函数指针的一个封装 typedef  类型 (*Funciton)(参数表) bind(函数指针,对象指针,参数占位表)

7.Lambda表达式

  1. int main()
  2. {
  3. auto add= [](int a, int b)->int{
  4. return a + b;
  5. };
  6. int ret = add(1,2);
  7. std::cout << "ret:" << ret << std::endl;
  8. return 0;
  9. }

解释:

  第3至5行为lamda表达式的定义部分

  []:中括号用于控制main函数与内,lamda表达式之前的变量在lamda表达式中的访问形式;

  (int a,int b):为函数的形参

  ->int:lamda表达式函数的返回值定义

  {}:大括号内为lamda表达式的函数体。

8.auto_ptr、shared_ptr、weak_ptr(头文件<memory>)

  ——>shared_ptr std::shared_ptr包装了new操作符动态分别的内存,可以自由拷贝复制,基本上是使用最多的一个智能指针类型。

  使用 : std::shared_ptr<Test> p1 = std::make_shared<Test>();

---恢复内容结束---

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号