一起学习c++11——c++11中的新语法
2016-07-13 22:57
399 查看
c++11新语法1: auto关键字
c++11 添加的最有用的一个特性应该就是auto关键字。
不知道大家有没有写过这样的代码:
甚至比这个更复杂的模板嵌套。
这种情况下,不但代码冗长,而且容易出错,出错之后的编译错误提示信息也难以阅读
而使用auto则可以大幅的简化代码的编写,也减少拼写出错的可能
c++11新语法2: nullptr
在没有nullptr之前,空指针的定义如下:
因为C++是强类型的,void *是不能隐式转换成其他指针类型的,所以c++的NULL被直接定义为0.
这种情况下有个很扯的错误就是
这种情况下:
是不明确的。
所以在c++11中引入了nullptr
解决了这个问题。
c++11新语法2: for循环
c++中常规的for循环如下:
其他语言,比如python中的for循环是这样的
cpper会不会感到忧郁?
所以c++11引入了这个:
以上就是c++11中最常用的一些新语法。
abelkhan技术论坛:http://abelkhan.com/forum.php,欢迎大家交流技术
c++11 添加的最有用的一个特性应该就是auto关键字。
不知道大家有没有写过这样的代码:
std::map<std::string, std::vector<std::shared_ptr<std::list<T> > > > map; std::map<std::string, std::vector<std::shared_ptr<std::list<T> > > >::iterator it = map.begin();
甚至比这个更复杂的模板嵌套。
这种情况下,不但代码冗长,而且容易出错,出错之后的编译错误提示信息也难以阅读
而使用auto则可以大幅的简化代码的编写,也减少拼写出错的可能
std::map<std::string, std::vector<std::shared_ptr<std::list<T> > > > map; auto it = map.begin();
c++11新语法2: nullptr
在没有nullptr之前,空指针的定义如下:
#ifdef __cplusplus #define NULL 0 #else #define NULL ((void *)0) #endif
因为C++是强类型的,void *是不能隐式转换成其他指针类型的,所以c++的NULL被直接定义为0.
这种情况下有个很扯的错误就是
void foo(int i); void foo(char* p) ;
这种情况下:
foo(NULL);
是不明确的。
所以在c++11中引入了nullptr
foo(0); foo(nullptr);
解决了这个问题。
c++11新语法2: for循环
c++中常规的for循环如下:
std::vector<int> v; for(auto it = v.begin(); it != v.end(); it++){ //do anything }
其他语言,比如python中的for循环是这样的
for var in list: #do anything
cpper会不会感到忧郁?
所以c++11引入了这个:
for(auto v : vector){ // do anything }
以上就是c++11中最常用的一些新语法。
abelkhan技术论坛:http://abelkhan.com/forum.php,欢迎大家交流技术
相关文章推荐
- NwCreate之创建nwc文件
- keybd_event常量符号 含义
- 模拟键盘输入字符串的C++类
- 模拟键盘向当前光标处发送字符串
- 分割字符串
- 获取多个同名窗口的句柄
- 基于C语言sprintf函数的深入理解
- 提高项目31.4-读入一个C++程序,整理其格式,使其按规范排版
- 最小化所有窗口(模拟显示桌面)
- EnumWindows 传递自定义参数实例
- 生成rdp文件中的密码字串
- 获取Windows版本
- c语言字符串和c语言float的问题解答
- MFC简单线程_两个线程比较
- 正确读取REG_DWORD键值
- 修改注册表项的权限
- c语言中关于n个元素的栈和c1赋不上值的问题
- VC++ 高效、快速给REG_DWORD赋值
- VC++ 系统服务如何让服务进程结束后依赖windows自身把服务重启
- 如何让程序自身防病毒