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函数。

C++Primer 4th edition读书笔记-第二章的更多相关文章

  1. 《C++ Primer》读书笔记—第二章 变量和基本类型

    声明: 文中内容收集整理自<C++ Primer 中文版 (第5版)>,版权归原书所有. 学习一门程序设计语言最好的方法就是练习编程. 1.8比特的char类型计算机表示的实际范围是-12 ...

  2. 《C++ Primer 4th》读书笔记 序

    注:本系列读书笔记是博主写作于两三年前的,所以是基于<C++ Primer>第四版的,目前该书已更新至第五版,第五版是基于C++11标准的,貌似更新挺多的.博主今年应届硕士毕业,如若过阵子 ...

  3. STL源码分析读书笔记--第二章--空间配置器(allocator)

    声明:侯捷先生的STL源码剖析第二章个人感觉讲得蛮乱的,而且跟第三章有关,建议看完第三章再看第二章,网上有人上传了一篇读书笔记,觉得这个读书笔记的内容和编排还不错,我的这篇总结基本就延续了该读书笔记的 ...

  4. Getting Started With Hazelcast 读书笔记(第二章、第三章)

    第二章 起步 本章就相当简单粗暴了,用一个个例子说明hazelcast怎么用. 1.map,set,list这些集合类都是开箱即用的,只要从Hazelcast的实例中获取一份就行. 2.增加了Mult ...

  5. Java Concurrency in Practice 读书笔记 第二章

    第二章的思维导图(代码迟点补上):

  6. Spring 3.x 实践 第一个例子(Spring 3.x 企业应用开发实战读书笔记第二章)

    前言:工作之后一直在搞android,现在需要更多和后台的人员交涉,技术栈不一样,难免鸡同鸭讲,所以稍稍学习下. 这个例子取自于<Spring 3.x 企业应用开发实战>一书中的第二章,I ...

  7. javascript 数据结构和算法读书笔记 > 第二章 数组

    这章主要讲解了数组的工作原理和其适用场景. 定义: 一个存储元素的线性集合,元素可以通过索引来任意存取,索引通常是数字,用来计算元素之间存储位置的偏移量. javascript数组的特殊之处: jav ...

  8. [Effective Java 读书笔记] 第二章 创建和销毁对象 第一条

    第二章  创建和销毁对象 第一条 使用静态工厂方法替代构造器,原因: 静态工厂方法可以有不同的名字,也就是说,构造器只能通过参数的不同来区分不同的目的,静态工厂在名字上就能表达不同的目的 静态工厂方法 ...

  9. C primer plus 读书笔记第二章

    这章的标题是C语言概述,内容大概是介绍一些简单的示例程序,来了解和熟悉C语言的一些基本特征. 这是书里的第一段代码,敲敲找找感觉.推荐在linux环境下写代码. PS:倒腾sublime text一下 ...

随机推荐

  1. 基于CUDA的粒子系统的实现

    基于CUDA的粒子系统的实现 用途: 这篇文章作为代码实现的先导手册,以全局的方式概览一下粒子系统的实现大纲. 科普: 对粒子进行模拟有两种基本方法: Eulerian(grid-based) met ...

  2. struts2接收参数的几种形式

    1.使用属性 HTML: <form action="login" method="post" name="form1"> 用户 ...

  3. MySQL中分组取第一条, 以及删除多余的重复记录

    检查重复记录 -- 检查重复code1 select count(identity) num, identity from event_log where code='code1' order by ...

  4. 示例:Socket应用之简易聊天室

    在实际应用中,Server总是在指定的端口上监听是否有Client请求,一旦监听到Client请求,Server就会启动一个线程来响应该请求,而Server本身在启动完线程之后马上又进入监听状态. 示 ...

  5. IOS 进阶之 WKWebView

    前言 Xcode8发布以后,编译器开始不支持IOS7,所以很多应用在适配IOS10之后都不在适配IOS7了,其中包括了很多大公司,网易新闻,滴滴出行等.因此,我们公司的应用也打算淘汰IOS7. 支持到 ...

  6. SecureCRT 快捷键总结 设置快捷键

    http://oldboy.blog.51cto.com/2561410/907098 自己整理的一些 查看 Alt + Enter     全屏   菜单 Alt + f + n     克隆会话窗 ...

  7. python练习笔记——利用信号signal处理僵尸进程

    1 signal处理僵尸进程的基于语法 利用信号signal处理僵尸进程的方法:signal(SIGCHLD,SIG_IGN),该方法也是第三种处理僵尸进程的方法. SIGCHLD:子进程状态改变后产 ...

  8. python学习笔记——multiprocessing 多进程模块Process

    系统自带的fork模块创建的多进程是基于Linux或Unix平台的,而window平台并不支持: python中的multiprocess为跨平台版本的多进程模块,支持子进程.通信和共享数据.执行不同 ...

  9. PLSQL_标准删除的方式Delete/Drop/Truncate区别和比较(概念)

    2014-06-02 Created By BaoXinjian

  10. js数组基本知识

    1.数组的引出 用数组解决王大爷养乌龟的问题: var weights=[3,5,1,3.4,2,50]; var all_weight=0; var avg_weight=0; for (i=0;i ...