C++11心得笔记

大致看完了<<深入理解c++11>>这本书籍,终结一下心得:

总的来说c++11有很多优秀的特性是和boost,python,java类似的,就不如boost里面的智能指针,lambda匿名函数等已经加入到c++11的标准了,还有python的元组,原生字符串R等也引入到了c++11的标准了,下面详细列一下c++11中我觉得对自己挺有用的特性:

  1.c++11中加入了__func__的功能,表示在哪个函数,在python等语言也有这样的功能,可以和__LINE__,__FILE__结合使用方便调试代码;

  2.c++11中引入了新的数据类型long long,unsigned long long等类型可以表示更长的数据类型;

  3.c++11中可以使用assert调试代码,当发布版本是可以定义NDEBUG宏来取消assert函数,这时候编译器会优化掉assert相关的代码,对调试代码,和发布release版本是很有用的;

  4.c++11中引入了noexcept修饰符,表示修饰的函数不允许抛出异常,这对控制程序的逻辑是很有帮助的,用法就不具体介绍了;

  5.c++11引入了override和final,分别表示还函数是重写父类的函数,和该函数是最终的函数,不允许子类重写,否则会编译报错,使用它们一来可以是程序更加的安全,二来提高代码的可读性,看到它们就一目了然了该函数有怎样的特性;

  6.当基类有很多的自定义的构造函数,派生类为了使用它们就需要使用初始化列表来穿便基类的构造函数,这样是很麻烦的,c++11为了减少代码量,增加了继承构造函数的特性,即在构造函数中使用using Base::Base;的方式来继承基类的构造函数,可以给程序员带来很多遍历;

  7.c++11中还引入了委派构造函数的功能,当构造函数中有相同的代码时,可以使用委派构造函数来减少代码冗余,用法是以一个构造函数为目标构造函数,一些初始化操作都写在这里,其他的构造函数则不需要写,只需要在初始化列表中使用该委派构造函数就可以了,具体用法可以参考c++11的书籍;

  8.c++11还引入了移动构造函数的功能,移动构造函数主要用于将亡值占用资源和释放资源的效率问题,具体用法就是在拷贝构造函数的参数上多加一个&即&&,使用移动构造函数可以提高效率,类试使用引用提高效率;

  9.c++11支持在类中进行初始化,而不一定都要使用初始化列表,对编写代码带来很多的遍历;

  10.c++11支持类型自动推到auto,当遇到长的类型时,可以使用auto,也给编程代码很多的遍历;

  11.c++11加强了for关键字的功能,可以和python,java,boost类似,可以这样使用for(auto val:List){};

  12.c++11引入了boost智能指针的支持,如shared_ptr,weak_ptr等;

  13.c++11加强了常量表达式,推荐使用const static int xxx = 1代替宏;

  14.c++11加强了枚举类型,enum class Type{xx1,xx2},即在原来枚举类型基础上加了class,这样的加强的枚举来下,可以说是类型安全的,应该尽量使用加强的枚举类型;

  15.c++11映入了nullptr的支持这是比NULL更好的空值,用于声明空指针,它的类型时nullptr_t,如果是空指针应该尽量使用nullptr来代替NULL,0,他是更安全的空值;

  16.当声明了自定义的构造函数时,编译器就不会生成默认的一系列的构造函数了,这是就需要手动声明会显得有点不方便,c++11引入了=default,可以让函数产生默认版本,还有=deleted关键字,可以删除该函数避免隐式装换,可以用于成员函数和普通函数,也可以使用explicit来避免构造函数的隐式转换,但是不能同时使用=deleted和explict;

  17.c++11中还引入了匿名函数lambda的支持,类似于boost,python等的匿名函数的功能,用于stl和算法中还是很常用的;

  18.c++11中还引入了不同字节编码直接转换的函数功能如mbrtoc16,c16rtomb等函数;

  19.c++11中还引入了原生字符串的功能,如R,uR等,类似于python等语言的原生字符串的功能;

    以上介绍的c++11的特性都是非常常用的特性,在代码程序中应该尽可能的多用这些特性,我觉得python中有的特性,在c++11中大多数都包含了进来,比如元组等在c++11中也是有的,在编程中应该尽可能的用这些特性,比如:

c++11,stl,算法algorithm,boost等。

    当然c++11中还有其他不错的特性比如atomic,多线程,decltype,还有为了方便泛型编程的一系列的特性就不一一列举了,上面列的特性都是非常常用的,在代码中应该尽可能的使用它们.


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值