1、void*指针的使用,平时见得也很多了,至于为什么使用void* 指针,很多人有自己的见解,反正普通指针轻轻松松的转向void * 指针,但是void*指针转向其他的指针都要采用强制转换的。

2、static_cast强制转换举例

  1. int xx = ;
  2.  
  3. 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

  1. int haha = ;
  2. int hahaha = ;
  3. const int &ii = haha;
  4. decltype(ii) hehe = hahaha;
  5. cout<<"hehe "<<hehe<<typeid(hehe).name()<<endl;

结果是hehe 1int

主要就是将ii的类型作为hehe的类型,ii本身是一种引用类型,话说引用类型必须要初始化

constexpr很多编译器实现不了的,新标准新挑战呀

c++11新的小猫腻的更多相关文章

  1. [转载] C++11新特性

    C++11标准发布已有一段时间了, 维基百科上有对C++11新标准的变化和C++11新特性介绍的文章. 我是一名C++程序员,非常想了解一下C++11. 英文版的维基百科看起来非常费劲,而中文版维基百 ...

  2. C++11新特性——大括号初始化

    C++11之前,C++主要有以下几种初始化方式: //小括号初始化 string str("hello"); //等号初始化 string str="hello" ...

  3. Authing新功能——小程序扫码登录

    近期,Authing 发布了新功能--小程序扫码登录. 小程序扫码登录指使用Authing小程序身份管家在网页端或其它客户端执行微信登录,目前的SDK仅支持客户端JavaScript.其它语言若想使用 ...

  4. C++ 11学习和掌握 ——《深入理解C++ 11:C++11新特性解析和应用》读书笔记(一)

    因为偶然的机会,在图书馆看到<深入理解C++ 11:C++11新特性解析和应用>这本书,大致扫下,受益匪浅,就果断借出来,对于其中的部分内容进行详读并亲自编程测试相关代码,也就有了整理写出 ...

  5. C++11新特性总结 (二)

    1. 范围for语句 C++11 引入了一种更为简单的for语句,这种for语句可以很方便的遍历容器或其他序列的所有元素 vector<int> vec = {1,2,3,4,5,6}; ...

  6. C++11新特性总结 (一)

    1. 概述 最近在看C++ Primer5 刚好看到一半,总结一下C++11里面确实加了很多新东西,如果没有任何了解,别说自己写了,看别人写的代码估计都会有些吃力.C++ Primer5是学习C++1 ...

  7. C++ 11 新特性

    C++11新特性:          1.auto          2.nullptr          3.for          4.lambda表达式          5.override ...

  8. 在C++98基础上学习C++11新特性

    自己一直用的是C++98规范来编程,对于C++11只闻其名却没用过其特性.近期因为工作的需要,需要掌握C++11的一些特性,所以查阅了一些C++11资料.因为自己有C++98的基础,所以从C++98过 ...

  9. c++11新标准for循环和lambda表达式

    :first-child { margin-top: 0px; } .markdown-preview:not([data-use-github-style]) h1, .markdown-previ ...

随机推荐

  1. hihoCoder挑战赛25

    萌新第一次打hihoCoder的比赛有点慌 T1 T1并不是特别难想到dp就好做了 显而易见的是一个01背包问题 Code: #include <cstdio> #include < ...

  2. DotnetBar在VS2010工具箱中不显示问题

    请参考:http://blog.csdn.net/yanbo710148546/article/details/7862819

  3. C++语法-指针 (1)

    <C++程序设计> 谭浩强  清华大学出版社 2016-08-03 1.P167 一般的C++编译系统为每个指针变量分配4个字节的存储单元,用来存放变量的地址. 2.P169 .cpp文件 ...

  4. composer 一些使用说明

    1 使用订制的包 配置 "repositories": [ { "type": "path", "url": " ...

  5. 不同json如何使用jsonArray以及ajax如何取,实现读取新闻

    jsp界面 <%@ page contentType="text/html;charset=gb2312"%><%@page import="org.j ...

  6. 使用wait()与notify()实现线程间协作

    调用sleep()和yield()的时候锁并没有被释放,而调用wait()将释放锁.这样另一个任务(线程)可以获得当前对象的锁,从而进入它的synchronized方法中.可以通过notify()/n ...

  7. PHP基础教程-54课-问题

    question: $arr = array(1,2,3,4); /*如何通过foreach 将数组变成 $arr = arry(2,4,6,8) */ 起初用: $arr = array(1,2,3 ...

  8. Jmail组件-----发送email

    jmail是一个第三方邮件操作组件,通常位于web服务器端,和站点程序紧密配合来接收及提交邮件到邮件服务器的控件,让网站拥有发送邮件既接收邮件的功能. 之所以想尝试它的理由呢 是因为----jmail ...

  9. python时间格式化

    import timeprint time.time()输出的结果是:1279578704.6725271 但是这样是一连串的数字不是我们想要的结果,我们可以利用time模块的格式化时间的方法来处理: ...

  10. Android中的Service小结

    简介 Service适合执行不需要和用户交互,而且长期运行的任务.即使程序被切换回后台,服务仍然可以正常运行.Service并不自动开启线程,默认运行在主线程中. Service中需要重载的函数 on ...