C++ 11
2018-11-13 07:31:44来源:博客园 阅读 ()
---恢复内容开始---
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调用错误
class Test { public: void TestWork(int index) { std::cout << "TestWork 1" << std::endl; } void TestWork(int * index) { std::cout << "TestWork 2" << std::endl; } }; int main() { Test test; test.TestWork(NULL); test.TestWork(nullptr); }
3. for 循环
C++ 11 中增加了auto,还加强了for循环,并还引入了for each语句
第一种for:
int main() { int numbers[] = { 1,2,3,4,5 }; std::cout << "numbers:" << std::endl; for (auto number : numbers) { std::cout << number << std::endl; } }
第二种for each:
#include <array> #include <iostream> #define __TEXT int main() { #ifdef __TEXT //c++11 code std::array<int, 4> arraydemo = { 1,2,3,4 }; std::cout << "arraydemo:" << std::endl; for each(auto itor in arraydemo) { std::cout << itor << std::endl; } int arraydemosize = sizeof(arraydemo); std::cout << "arraydemo size:" << arraydemosize << std::endl; #endif #ifndef _ARRAY__ int nums[] = {1,2,3,4,5,6}; for each(auto num in nums) { std::cout << num << std::endl; } #endif getchar(); return 0; }
4.STL 容器补充
5.Thread ---引入boost::thread库 (头文件<thread>)
——>thread:
——>atomic 类型:
——>condition_variable:
6.std::function std::bind (头文件functional)
由Boost库引用而来,可以与lambda表达式混合使用
void Add(std::function<int(int, int)> fun, int a, int b) { int sum = fun(a, b); std::cout << "sum:" << sum << std::endl; } function<int(int,int)>
function是对函数指针的一个封装 typedef 类型 (*Funciton)(参数表) bind(函数指针,对象指针,参数占位表)
7.Lambda表达式
int main() { auto add= [](int a, int b)->int{ return a + b; }; int ret = add(1,2); std::cout << "ret:" << ret << std::endl; return 0; }
解释:
第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>();
---恢复内容结束---
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:一个纯虚函数导致的问题
- C++ 转换函数搭配友元函数 2020-06-10
- C++ 自动转换和强制类型转换(用户自定义类类型) 2020-06-10
- C++ rand函数 2020-06-10
- C++ 友元函数 2020-06-10
- C++ 运算符重载 2020-06-10
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash