C++ Primer 第二章

第二章 变量和基本类型


2.1 基本内置类型

类型 最小存储空间
bool -
char 8
wchar_t 16
short 16
int 16
long 32
float 6位有效数字
double 10位有效数字

2.3.3 定义对象

  • 初始化有直接初始化复制初始化复制初始化的语法是=直接初始化的语法是()

2.3.4 变量初始化规则

  • 内置变量的初始化:内置类型变量是否进行自动初始化取决于变量定义的位置。在函数外部定义的变量自动初始化位0;在函数体内部定义的变量不进行自动初始化。
  • 未初始化变量引起的错误难以发现,不要依赖未定义行为。
  • 类类型变量的初始化:每个类都定义了该类型的对象怎样进行初始化。类通过定义一个或者对个构造函数来控制类对象的初始化(2.3.3节)。如果定义某个类的变量时没有提供初始化式,需要通过默认构造函数进行初始化。

2.3.5 声明和定义

  • 变量的定义:用于为变量分配存储空间,还可以为变量指定初始值。在一个程序中,变量有且仅有一个定义。
  • 声明:用于向程序表明变量的类型和名字。定义也是声明:当定义变量时声明了它的类型和名字。可以通过使用extern关键字来声明变量名而不定义它。

2.4 const限定符

  • 定义一个变量代表某个常数的方法时变量是可以被修改的。const限定符提供了一个解决办法,通过const int bufSize = 512将变量bufSize限定为常数,任何修改bufSize的尝试都会导致编译错误。
  • 因为常量在定以后不能进行修改,所以定义时必须进行初始化。
  • 与其他变量不同,在全局作用于声明的const变量是定义该对象文件的局部变量,不能被其他文件访问。通过指定const变量extern,就可以在整个程序中访问const对象
  • 非const变量默认为extern,要使const变量能够在其他文件中被访问,就需要显示的指定它为extern

2.5 引用

  • 引用(reference)就是对象的另一个名字。在实际程序中,引用主要用作函数的形式参数。
  • 引用是一种复合类型(compound type),通过在变量名前添加&符号定义。
  • 复合类型是指用其他类型定义的类型。不能定义引用类型的引用,但可以定义任何其他类型的引用。
  • 引用必须用与该引用同类型的对象初始化。
  • 引用是别名,所以作用在引用上的所有操作都是作用在该引用绑定的对象上。
  • const引用
    const int ival = 1024;
    const int &refVal = ival;   //ok
    int &ref2 = ival;   //error
    
    //legal for const references only
    int i = 42;
    const int &r = 42;
    const int &r2 = r + i;
    //将引用绑定到不同的类型时,最容易理解。
    double dval = 3.14;
    const int &ri = dval;
    //编译器会将这些代码转换为如下的形式的编码:
    int temp = dval;
    const int &ri = temp;
  • 如果ri不是const,那么可以给ri赋新值,这样做不会修改dval,而是修改了temp。仅允许const引用绑定到需要临时使用的值完全避免了这个问题,因为const引用是只读的。
  • 非const引用只能绑定到与该引用同类型的对象;const引用则可以绑定到不同但相关的类型的对象或绑定到右值。

2.6 typedef名字

typedef通常被用于以下三种目的:

  • 为了隐藏特定类型的实现,强调使用类型的目的。
  • 简化复杂的类型定义,使其容易理解。
  • 允许一种类型用于多个目的,同时使得每次使用该类型的目的明确。

2.9.1 设计自己的头文件

  • 头文件用于声明而不是用于定义。但是有三个例外:头文件可以定义类、值在编译时就已知的const对象和inline函数,这些实体可以在多个源文件中定义,只要每个源文件中的定义时相同的。

2.9.2 预处理器的简单介绍

  • 避免多重包含可以使用如下代码段:
    #ifndef __SALESITEM_H
    #define __SALESITEM_H
    ...
    ...
    #endif
  • < >一般表示该头文件是标准头文件,编译器将在预定义的位置查找该文件;" "一般认为不是系统头文件,查找开始于源文件所在的路径。一般" "查找范围更大。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,607评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,047评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,496评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,405评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,400评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,479评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,883评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,535评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,743评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,544评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,612评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,309评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,881评论 3 306
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,891评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,136评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,783评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,316评论 2 342

推荐阅读更多精彩内容