zoukankan      html  css  js  c++  java
  • C++Primer 4th edition读书笔记-第二章

    1

    变量的定义用于为变量分配存储空间,还可以为变量指定初始值。在一个程序中,变量有且只有一个定义。
    声明用于向程序表明变量的名字和类型。定义也是声明:当定义变量时,我们声明了它的类型和名字。可以通过使用extern
    关键字声明变量名而不定义它。不定义变量的声明包括对象名,对象类型和对象类型前的关键字extern。
    extern int i; // declears but does not define i
    int i; // declars and defines i
    extern 声明不是定义,也不分配存储空间。事实上,他只是说明变量定义在程序的其他地方。程序中变量可以声明多次,
    定义只能一次。
    只有当声明是定义时,声明才可以有初始化式,因为只有定义才分配存储空间。初始化式必须要有存储空间来进行初始化。
    声明有初始化式那么声明可以当作是定义,即使声明标记为extern:
    extern double pi = 3.1416; // definition
    double pi; // error:redefinition of pi
    同样,随后的含有初始化式的extern声明也是错误的:
    extern double pi = 3.1416; // definition
    extern double pi; // ok:declaration not definition
    extern double pi = 3.1416; // error:redefinition of pi
    声明和定义之间的区别可能看起来微不足道,但事实上却举足轻重的。

    2

    const 对象默认为文件的局部作用域,此变量之存在于这个文件中,不能被其他文件访问,
    非const变量可以在整个程序中访问,非const默认为extern,要使const变量能够在其他文件中访问,必须显示的指定它为extern
    在前面加extern可以使const变量在整个程序中访问
    int counter;
    const int counter;
    extern const int counter;

    3

    引用主要用作函数的形式参数,引用是一种符合类型,符合类型就是指用其他类型定义的类型。
    const引用是指向const对象的引用,const引用可以初始化为不同类型的对象或者初始化为右值,如字面值常量:
    int i = 42;
    const int &r1 = 42;
    const int &r2 = r + 1;
    同样的初始化对于非const引用是不合法的。

    4

    枚举不但定义整数常量集,还把它们聚集成组,每个enum都定义了一种唯一的类型,可以定义和初始化enum类型的对象;
    枚举类型对象的初始化或赋值,只能通过枚举成员或同一枚举类型的其他对象来进行。

    5

    定义变量和定义数据成员存在非常重要的区别:一般不能把类成员初始化作为其定义的一部分&r2 = r + 1;
    同样的初始化对于非const引用是不合法的。

    6

    枚举不但定义整数常量集,还把它们聚集成组,每个enum都定义了一种唯一的类型,可以定义和初始化enum类型的对象;
    枚举类型对象的初始化或赋值,只能通过枚举成员或同一枚举类型的其他对象来进行。

    7

    定义变量和定义数据成员存在非常重要的区别:一般不能把类成员初始化作为其定义的一部分。当定义数据成员时,只能
    指定该数据成员的名字和类型

    8

    头文件一般为相关声明提供一个集中存放的位置,头文件一般包含类的定义,extern变量的声明和函数的声明。
    头文件用于声明而不是定义,当设计头文件时,记住定义和声明的区别是很重要的。因为头文件被包含在多个源文件中
    所以里面不应该有变量和函数的定义,但是这一规则有三个例外,头文件可以定义类,值在编译时就已经知道的const对象和inline函数。

  • 相关阅读:
    LeetCode
    LeetCode
    LeetCode
    LeetCode
    LeetCode
    LeetCode
    LeetCode
    flutter webview_flutter 设置cookies
    flutter richText富文本
    flutter 安卓再次点击返回退出应用
  • 原文地址:https://www.cnblogs.com/lit10050528/p/3417261.html
Copyright © 2011-2022 走看看