The annotation of <<C++ primer>>

{藤原豆腐坊自家用}

给变量名一个初始值几乎总是正确的. 但不要求必须这么做

C++的主要设计目的之一就是允许程序员自定义类型,而这些类型和内置类型一样易于使用.

什么是对象?

一般而言, 对象是内存中具有类型的区域,说的具体一些, 计算左值表达式就会产生对象.

关于初始化

C++支持两种初始化方式,

复制初始化 copy initialization

直接初始化 direct-initialization

int ival(123); //direct-initialization

int ival = 123; //copy-initialization

初始化不是赋值!

C++里面非常强调赋值和初始化不是同一操作!!

初始化指创建变量并给它赋初始值, 而赋值则是擦除对象的当前值并用新值代替.

关于左值右值的定义.

1. lvalue (pronounced "ell-value"): An expression that is an lvalue may appear as either the
left-hand or right-hand side of an assignment.

2. rvalue (pronounced "are-value"): An expression that is an rvalue may appear on the right-
but not left-hand side of an assignment.

关于变量初始化的规则:

Initialization of Variables of Built-in Type

Whether a variable of built-in type is automatically initialized depends on where it is defined. Variables defined outside any function body are initialized to zero. Variables of built-in type defined inside the body of a function are uninitialized . Using an uninitialized variable for anything other than as the left-hand operand of an assignment is undefined.

Initialization of Variables of Class Type
 
         Each class may also define what happens if a variable of the type is defined but an initializer is not provided. A class does so by defining a special constructor, known as the default constructor . This constructor is called the default constructor because it is run "by default;" if there is no initializer, then this constructor is used. The default constructor is used regardless of where a variable is defined.

注意! extern声明不是定义, 也不分配储存空间.事实上,他只是说明变量定义在程序的其他地方, 程序中变量可以声明多次, 但只能定义一次.

啥是作用域(scope)?

用来区分名字的不同意义的上下文称作 作用域.

(大牛们总能把一个很感性的概念很具体浅显的表述出来, 啊 膜拜lippman)

一般局部作用域和全局作用域对于C程序员来说都是很熟悉的. 这里需要强调一下的是语句作用域(statement scope).

for(int val = 1; val< 10; val++)

这里val变量就是个语句作用域里面的变量. 它定义在for语句的作用域中,只能在for语句中是使用, 而不能在main函数中使用.

关于const的一些问题会开一贴集中整理好我遇到过所有关于const的问题 :)

引用:

引用就是对象的另外一个名字. 不能定义引用类型的引用, 但可以定义任何其他类型的引用. (不能二次引用)

int ival = 1024;
int &refVal = ival; // ok: refVal refers to ival
int &refVal2; // error: a reference must be initialized
int  &refVal3 = 10; // error: initializer must be an object

初始化是指明引用指向哪个对象的唯一方法.

const 引用是指向const 对象的引用.

This behavior is easiest to understand when we look at what happens when we bind a reference to an object of a different type. If we write

double dval = 3.14;
const int &ri = dval;

the compiler transforms this code into something like this:

int temp = dval;  // create temporary int from the double
const int &ri = temp;  // bind ri to that temporary 

同学, 请你讲讲typedef的作用 ?

  • To hide the implementation of a given type and emphasize instead the purpose for which the type is used
  • To streamline complex type definitions, making them easier to understand
  • To allow a single type to be used for more than one purpose while making the purpose clear each time the type is used

每句成员是常量. 不能改变枚举成员的值.枚举成员本身就是一个常量表达式, 所以也可以用于需要常量表达式的任何地方. 每个enum都定义一种唯一的类型. 枚举类型的对象的初始化或赋值只能通过其枚举成员或同一枚举类型的其他对象来进行.

类的数据成员:

定义变量和定义数据成员存在非常重要的区别:

一般不能把类成员的初始化作为其定义的一部分. 当定义数据成员时, 只能指定该数据成员的名字和类型. 类不是在类定义里定义数据成员时初始化数据成员, 而是通过构造函数的特殊成员函数控制初始化.

访问标号:

访问标号负责控制使用该类的代码是否可以使用给定的成员. 类的成员函数可以使用类的任何成员, 而不管其访问级别. 访问标号 public, private可以多次出现在类定义中, 给定的访问标号应用到下一个访问标号出现为止.

用class和struct关键字定义类的唯一差别在于默认访问级别: 默认情况下, struct 成员为public, 而class的成员为private.

未完~ 待更新

二零一五年二月  摄于湖南

某小学公路旁的樱花(O(∩_∩)O~应该是樱花吧)~

The annotation of C++ primer {藤原豆腐坊自家用}相关推荐

  1. Python 碎碎念 -- 不定期记录遇到的各种小问题(藤原豆腐坊自家用)

    关于利用numpy模块使用矩阵做内积的用法.可能会在各种开源库里面遇到 """ Programmer : EOF Date : 2015.02.22 file : num ...

  2. 龙族幻想最新东京机器人位置_龙族幻想藤原智坐标位置一览 藤原智任务攻略...

    龙族幻想v1.3.148安卓版 类型:角色扮演大小:1.39G语言:中文 评分:5.0 标签: 立即下载 龙族幻想藤原智在哪?这是苍穹之下异闻,需要找到npc藤原智,许多玩家都不清楚在什么位置,如何完 ...

  3. [画风突变] 藤原千花专属相册,C语言制作书记专属电子相册!

    前言 一款自己制作的电子相册不仅富有创意,而且能够最大可能的满足己需,今天小编带着大家制作的就是藤原千花的电子相册.要是你愿意,你也可以把你和你对象的点滴放进去哦,弄点爱情宣言什么的都是没什么问题. ...

  4. Java八股文--藤原豆腐店自用

    目录 1.Java跨平台的原理 2.基本数据类型所占字节数 3.Java中表示价格为啥不用double,而是用BigDecimal 4.双精度&单精度的区别 5.面向对象的特征 5.1.封装: ...

  5. 《如何有效阅读》藤原和博 读书笔记

    感想 1.整本书内容零散: 主旨是如何有效阅读,但是阅读方法不成系统,更像是零散的想法,或者说是作者想到什么就写什么.第一遍读完以后,大脑里没有什么整体思路,觉得作者说的有道理,但是没有实质性的方法建 ...

  6. Java反射--藤原豆腐店自用

    什么是反射? JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的信息以及动态调用对象的方法的功能称为j ...

  7. 线程八股文--藤原豆腐店自用

    目录 1.什么是进程.什么是线程,他们之间是什么关系? 1.1.进程是什么? 1.2.线程是什么? 1.什么是进程.什么是线程,他们之间是什么关系? 1.1.进程是什么? 是具有一定独立功能的程序,他 ...

  8. 数据库八股文--藤原豆腐店自用

    目录 数据库的分类和常见的数据库你知道那些? 关系型数据库 非关系型数据库 介绍一下三范式,设计表时一定要追求三范式吗? 数据库的分类和常见的数据库你知道那些? 关系型数据库 典型产品:MySQL.S ...

  9. CSUSTOJ-藤原书记想要探病(简单矩阵快速幂)

    题目连接:http://acm.csust.edu.cn/problem/4044 博客园食用链接: https://www.cnblogs.com/lonely-wind-/p/13941879.h ...

最新文章

  1. 论文阅读:CNN-RNN: A Unified Framework for Multi-label Image Classification
  2. linux c 创建子进程执行任务 简介
  3. java责任链模式的三种方式,分享一点面试小经验
  4. 【转】centos安装vim7.4
  5. python tempfile 创建临时目录
  6. matlab实现粗糙表面_基于分形理论的球头铣削表面形貌研究
  7. mcq 队列_MCQ | 8086微处理器中的字符串操作指令
  8. python 学习手册重点
  9. 下面属于python内置对象的有哪些_Python内置对象实现的方法及注意事项
  10. opencv之实现回形遍历像素算法
  11. mysql8.x非注册使用[{绿色使用]
  12. java程序流程图_跟我学java编程—绘制流程图其实很简单
  13. NPP/VIIRS夜间灯光数据下载和介绍
  14. MYSQL建表操作大全
  15. 《黑客X档案2007配套光盘》2007年上半年合集(6期)
  16. Spotfire 将字符串日期 转换为 日期格式
  17. 深度卷积神经网络基本介绍
  18. 新知实验室 TUIKaraoke在线 K 歌
  19. 【Alpha】第四次Daily Scrum Meeting
  20. html页面打印a4尺寸,html网页打印A4样式

热门文章

  1. 苹果手机打开浏览器显示无法连接服务器,苹果浏览器safari打不开网页因为无法连接服务器吗?...
  2. 在宝塔一键部署java项目时遇到的一些问题
  3. ArcGIS API for JavaScript根据两个点坐标在地图上画线
  4. php提取邮箱并返回,PHP 利用Mail_MimeDecode类提取邮件信息示例
  5. ARM GICv3 ITS介绍及代码分析
  6. Hello China V1.75版本运行截图
  7. 使用frp端口映射实现内网穿透(SSH、HTTP服务)
  8. 宽带,猫,路由器的关系是什么?
  9. 微信小程序 环形进度条_微信小程序实现圆形进度条实例分享
  10. Java使用465端口发送邮件(绕过25端口限制)