C++11在很早就已经发布了,但是一直没注意,现在总结一下理解的特性:
- auto关键字的引入,编辑器可以根据上下文自动判定类型,但是不能用于声明和内联函数。
- NULLPtr的引入,由于NULL在某些问题上的局限性,引用NULLPtr将更加准确。
- for循环中引入:,来表示集合,相当于其他语言的区间迭代(Python中foreach x in xx)
- 引入了std::Thread,使得线程的创建更加方便,同时std::atomic_前缀使得资源被加锁,可有效解决多线程冲突问题。
- auto_ptr,shared_ptr,weak_ptr等智能指针,shared_ptr通过make_shared来封装new创建过程,并且在被引用的过程中,其引用计数++,只有当计数为1的时候才会调用delete进行析构释放,这会引起相互占用资源而导致资源无法释放的问题。而weak_ptr可以解决相关问题。具体可参考https://www.cnblogs.com/feng-sc/p/5710724.html#title41。
- 引入了Overwrite和final关键字,确定虚函数是否需要重写和防止被覆盖。
- 加入R可以输出原生字符如
cout<<R("Hello \n world!")<<endl;
将会输出如下结果:
Hello \n world!
这里的转移字符“\n”不再认为是换行符而直接输出。