c++11新的小猫腻
1、void*指针的使用,平时见得也很多了,至于为什么使用void* 指针,很多人有自己的见解,反正普通指针轻轻松松的转向void * 指针,但是void*指针转向其他的指针都要采用强制转换的。
2、static_cast强制转换举例
int xx = ; cout<<"st "<<static_cast<double>(xx)<<typeid(xx).name()<<typeid(static_cast<double>(xx)).name()<<endl;
运行结果是
st 5intdouble
static强制转换的话,紧紧并不改变原来xx的类型的呀,但是整个的static_cast的转换才是真正的double
3、const_cast更加用于去const的强制类型转换,会多用于函数重载的过程中
4、有很多代码里存在字面值类型,其实提到字面值对应三个,算术类型,指针和引用。(nullptr作为一个神奇的存在,自己脑补吧)
5、预处理器和编译器,哈哈。
预处理名字是由预处理器来进行处理的,例如assert,NULL,这些东西根本不会等到编译的时候由编译器来管理,直接用预处理器来处理,典型的预处理变量是用#define来进行的,反正这些都是在预处理的阶段进行的,不用管它啦,最重要的是在使用assert这种进行调试的时候其实是不需要使用std的。因为预处理变量和命名空间没有任何瓜葛。
6、我们常常使用#define NDEBUG来进行控制assert的行为,但是记住了要想assert发挥作用,#define NDEBUG这句话必须要放在#include<cassert>前面,具体的详见头文件哈。
7、很多时候__func__宏我们是用不了的,为什么呢?因为这和编译器有关,有的编译器不支持这样的宏,悲哀!
8、有很多很难记的名字对我们来说却又很重要的术语。
decltype
int haha = ;
int hahaha = ;
const int &ii = haha;
decltype(ii) hehe = hahaha;
cout<<"hehe "<<hehe<<typeid(hehe).name()<<endl;
结果是hehe 1int
主要就是将ii的类型作为hehe的类型,ii本身是一种引用类型,话说引用类型必须要初始化
constexpr很多编译器实现不了的,新标准新挑战呀
c++11新的小猫腻的更多相关文章
- [转载] C++11新特性
C++11标准发布已有一段时间了, 维基百科上有对C++11新标准的变化和C++11新特性介绍的文章. 我是一名C++程序员,非常想了解一下C++11. 英文版的维基百科看起来非常费劲,而中文版维基百 ...
- C++11新特性——大括号初始化
C++11之前,C++主要有以下几种初始化方式: //小括号初始化 string str("hello"); //等号初始化 string str="hello" ...
- Authing新功能——小程序扫码登录
近期,Authing 发布了新功能--小程序扫码登录. 小程序扫码登录指使用Authing小程序身份管家在网页端或其它客户端执行微信登录,目前的SDK仅支持客户端JavaScript.其它语言若想使用 ...
- C++ 11学习和掌握 ——《深入理解C++ 11:C++11新特性解析和应用》读书笔记(一)
因为偶然的机会,在图书馆看到<深入理解C++ 11:C++11新特性解析和应用>这本书,大致扫下,受益匪浅,就果断借出来,对于其中的部分内容进行详读并亲自编程测试相关代码,也就有了整理写出 ...
- C++11新特性总结 (二)
1. 范围for语句 C++11 引入了一种更为简单的for语句,这种for语句可以很方便的遍历容器或其他序列的所有元素 vector<int> vec = {1,2,3,4,5,6}; ...
- C++11新特性总结 (一)
1. 概述 最近在看C++ Primer5 刚好看到一半,总结一下C++11里面确实加了很多新东西,如果没有任何了解,别说自己写了,看别人写的代码估计都会有些吃力.C++ Primer5是学习C++1 ...
- C++ 11 新特性
C++11新特性: 1.auto 2.nullptr 3.for 4.lambda表达式 5.override ...
- 在C++98基础上学习C++11新特性
自己一直用的是C++98规范来编程,对于C++11只闻其名却没用过其特性.近期因为工作的需要,需要掌握C++11的一些特性,所以查阅了一些C++11资料.因为自己有C++98的基础,所以从C++98过 ...
- c++11新标准for循环和lambda表达式
:first-child { margin-top: 0px; } .markdown-preview:not([data-use-github-style]) h1, .markdown-previ ...
随机推荐
- sqlserver 事务日志过大 收缩方法解决方案
sqlserver 事务日志过大,可能会导致备份失败或者数据库出现异常,所以要定期清除sqlserver 事务日志 建议:为了防止日志文件无限扩大,可以对日志文件作一些限制. 清除sqlserver事 ...
- zend create project prepare
1.php ini 安装pear 设置include_path 2.apache AllowOverride LoadModule rerwite去掉注释 <VirtualHost *:> ...
- 安装numpy
为了运行机器学习书上的实例,安装numpy.照着网上教程安装的,网上教程 1)下载numpy包 下载地址:https://pypi.python.org/pypi/numpy/#downloads 自 ...
- 安装MySQL(简便)
1.在本地虚拟机上上传mysql的5个安装包 2.查看opt目录下是否有这5个安装包 yum install /var/opt/mysql-community-* -y //安装MySQL syste ...
- 【转】如何保护自己的QQ号
账号丢失的原因 账号被注销 长时间未登陆 如果你的QQ号是普通号码,在连续三个月不登陆的情况下,腾讯公司会自动收回你的账号,也就意味着这个QQ号码从此再也不属于你了,会员号码是不会被收回的,要想不被收 ...
- <java基础学习>01环境变量配置
安装完JDK开始配置系统环境变量,在path变量里面添加java的bin目录 方法二: 配置完成后 在命令下输入javac查看是否配置成功 第一个java程序 hello world! class H ...
- [开发笔记]-未找到与约束ContractName Microsoft.VisualStudio.Text.ITextDocumentFactoryService...匹配的导出【转载自:酷小孩】
原文地址:http://www.cnblogs.com/babycool/p/3199158.html 今天打算用VisualStudio2012做一个js效果页面测试的时候,打开VS2012新建项目 ...
- Haskell 参考资料
1.Haskell 中文社区:www.haskellcn.org 2.Haskell 官网: www.haskell.org 3.Haskell 函数查询:www.haskell.or ...
- React Native 一个组件styles BUG
'use strict'; var React = require('react-native'); var { StyleSheet, PanResponder, View, Text } = Re ...
- 不支持关键字“data source”
网上大部分都是说data source之间需要插入一个空格或者都是一些低级的拼写错误造成的,但是我没有出现这些情况,是通过把data source改成server解决的,具体config里面的代码如下 ...