zoukankan      html  css  js  c++  java
  • C++ Primer 笔记——变量

    1. 初始化不是赋值,初始化的含义是创建变量时赋予其一个初始值,而赋值的含义是把对象的当前值擦除,而以一个新值来代替。

    2.使用列表初始化内置类型的变量时,如果初始值存在丢失信息的风险,则编译器将报错。

    int i{0.1};    // 错误


    3.如果想声明一个变量而非定义它,就在变量名前添加关键字extern,而且不要显示的初始化它,任何包含了显示初始化的声明即成为定义。

    extern int i;    // 声明i而非定义i
    int j;            // 声明并定义j  
    extern double pi = 3.14;    //定义,如果在函数体内试图初始化一个extern变量将报错


    4.引用并非对象,相反的,它只是为一个已经存在的对象起的另外一个名字。

    5.一旦引用的初始化完成,引用将和它的对象一直绑定在一起,所以引用在定义时必须初始化。

    6.在支持C++ 11的情况下空指针最好使用nullptr,而尽量避免使用NULL。至于原因可以看如下链接:

    http://www.cnblogs.com/zoneofmine/p/7224947.html

    7.void* 是一种特殊的指针类型,可用于存放任意对象的地址,但是我们不知道这个地址中到底是个什么类型的对象,所以也无法对这个对象做操作。

    8.在定义多个变量的时候,类型修饰符(*或&)仅仅修饰最近的那个变量。

    int* p1, p2;    // p1是int指针,p2是int

    9.引用本身不是一个对象,所以不能定义指向引用的指针,也没有引用的引用。

    10.decltype的表达式如果是加上了括号的变量,结果将是引用。

    int i = 0;
    decltype((i)) a;    // 错误,a是int&,没有初始化
    decltype(i) b;        // 正确,b是一个int
  • 相关阅读:
    Vim的行号、语法显示等设置,即.vimrc文件的配置
    Vim 配置详解
    经典SQL语句大全
    几种流行的AJAX框架jQuery,Mootools,Dojo,Ext JS的对比
    GHOST XP SP3无法安装IIS服务的解决方法
    开发中巧用Enum枚举类型
    代码的坏味道
    C#转义字符
    Dijit、ExtJS、jQuery UI 异同浅析
    未雨绸缪 Plan to Throw One Away
  • 原文地址:https://www.cnblogs.com/zoneofmine/p/7224923.html
Copyright © 2011-2022 走看看