随笔分类 -  C++学习

摘要:一、关键点 书上称vector是一种标准库类型,我们认它一个类模板。当然它是一个容器。 我们说光光一个vector只是模板,vector<int>才是类型。 内置类型和类类型都可以构成vector对象,而引用除外,甚至vector也可以作为另一个vector的元素。 二、vector的初始化 vec 阅读全文
posted @ 2017-10-11 17:53 GGBeng 阅读(146) 评论(0) 推荐(0) 编辑
摘要:一、关键点 1. 作用过程 遍历给定序列中的每个元素并对序列中的每个值执行某种操作。 2. 若要修改序列中元素的值,需将类型定义为引用 3. 只是查阅序列中元素的值,则可以不将类型定义为引用 注:“auto i”部分负责定义一个变量,每次迭代,这个变量会被初始化为序列中对应元素的值。 二、补充 fo 阅读全文
posted @ 2017-10-11 17:43 GGBeng 阅读(399) 评论(0) 推荐(0) 编辑
摘要:一、string 1. 使用字符串字面值初始化string对象 如:string s1 = "hiya"; string s2("hiya"); 该字面值的最后那个空字符不会被拷贝到这个string对象中。 切记,字符串字面值是字符数组,与string是不同的类型。 2. 使用getline()读取 阅读全文
posted @ 2017-10-11 17:35 GGBeng 阅读(376) 评论(0) 推荐(0) 编辑
摘要:一、关键词 从表达式的类型推断出要定义的变量的类型 示例:decltype(i) x = 0; //等价于int x = 0; 二、复合类型、const 1. 引用 和auto不同,当表达式为一个引用别名时,它不会将类型声明为该别名所绑定的对象的类型,而是保留为引用的类型。 2. const 和au 阅读全文
posted @ 2017-10-11 16:46 GGBeng 阅读(212) 评论(0) 推荐(0) 编辑
摘要:一、关键点 auto让编译器通过初始值来推算变量的类型 如:auto i = 2; //等价于int i = 2; 二、与复合类型、常量的结合 1. 引用 以引用对象的类型作为auto的类型。 2. const auto会忽略掉顶层const,而底层const则会保留下来。 如果希望auto类型是一 阅读全文
posted @ 2017-10-11 16:12 GGBeng 阅读(525) 评论(0) 推荐(0) 编辑
摘要:一、基础用法 二、类型别名指代复合类型 typedef char * pstring; const pstring cstr = 0; 上面用类型别名pstring指代char *,即pstring是指向char的指针,故const修饰的是指针,也即cstr是指向char的常量指针。 若我们尝试把类 阅读全文
posted @ 2017-10-11 09:16 GGBeng 阅读(187) 评论(0) 推荐(0) 编辑
摘要:【常量表达式】 一个这样的表达式:值不会改变 && 在编译过程中就能够得到计算结果 常见的常量表达式:字面值、用常量表达式初始化的const对象 一个对象是不是常量表达式由它的数据类型和初始值共同决定: const int cc = 1; cc是一个常量表达式,因为它①是一个常量,②值在编译过程就能 阅读全文
posted @ 2017-10-11 08:42 GGBeng 阅读(200) 评论(0) 推荐(0) 编辑
摘要:一、关键点 说法:常量对象 = const 对象 = const const 对象必须初始化 利用一个对象去初始化另外一个对象,则它们是不是 const 都无关紧要: 尽管ci是整型常量,但ci的常量特征仅仅在执行改变ci的操作时才会发挥作用。 可以把引用绑定到 const 对象上,我们称之为对常量 阅读全文
posted @ 2017-10-10 21:07 GGBeng 阅读(426) 评论(0) 推荐(0) 编辑
摘要:【常见的预处理功能】 【预处理器】 编译之前执行的一段程序,可以部分地改变我们所写的程序 举个例子:当预处理器看到#include标记时就会用指定的头文件的内容代替#include 【预处理变量】 不属于命名空间std,由预处理器负责管理 预处理变量有两种状态:已定义和未定义 当用到一个预处理变量时 阅读全文
posted @ 2017-10-10 19:33 GGBeng 阅读(815) 评论(0) 推荐(0) 编辑
摘要:我们先来看一条基本类型的声明语句:int a, b, ... 即一条声明语句由一个数据类型(int)和紧随其后的一个变量名列表(a, b, ...)组成 更通用的描述是:一个基本数据类型和紧随其后的一个声明符列表组成,每个声明符命名了一个变量并指定该变量是与该基本数据类型有关的某种类型。 例如:上面 阅读全文
posted @ 2017-10-10 19:11 GGBeng 阅读(594) 评论(0) 推荐(0) 编辑
摘要:一、搞清关键 说法:指针 = 指针变量 指针的地址:指针变量在内存中的地址,获取方式为:&p 指针指向的对象的地址:等价于指针变量的内容,是指针变量所占的内存空间中的内容,获取方式为:p 或 &i 指针 p 指向变量 i:指针变量 p 的值(p的值就是p所占内存空间的内容)为变量 i 的地址 不初始 阅读全文
posted @ 2017-10-10 19:10 GGBeng 阅读(215) 评论(0) 推荐(0) 编辑
摘要:【关键点】 引用不是对象,而是绑定对象(即引用只是对象的别名),它没有被分配内存空间,对它的任何操作都是对它所绑定的对象执行的。 引用必须初始化,并且一直和它的初始值对象绑定在一起(即无法令引用重新绑定到另外一个对象) 引用的类型要和与之绑定的对象严格匹配(除了对 const 的引用、动态类型这两种 阅读全文
posted @ 2017-10-10 18:26 GGBeng 阅读(215) 评论(0) 推荐(0) 编辑
摘要:【分离式编译】 C++支持分离式编译机制,它允许将程序分割为若干个文件,每个文件可被独立编译。 这带来了一个问题——文件间共享代码。如,一个文件的代码可能需要使用另一个文件中定义的变量。 为了支持分离式编译,C++将声明和定义区分开来。 声明:使得名字为程序所知,一个文件若想使用别处定义的名字就必须 阅读全文
posted @ 2017-10-10 15:18 GGBeng 阅读(1265) 评论(0) 推荐(0) 编辑
摘要:字面值常量举例: 注意: 我们可以将整型字面值写作十进制数、八进制数或十六进制数的形式。 十进制字面值的类型是int、long、long long中尺寸最小的那个,前提是这种类型能容纳下当前的值。 八进制和十六进制字面值的类型是int、unsigned int、long、unsigned long、 阅读全文
posted @ 2017-10-10 14:57 GGBeng 阅读(621) 评论(0) 推荐(0) 编辑
摘要:摘要:内置类型的机器实现、字/字节/比特、内存 一、概念 计算机以比特序列存储数据,每个比特非0即1,如:00011011011100010110010000111011... 二、计算机以块来处理内存 计算机以2的整数次幂个比特作为块来处理内存 字节:可寻址的最小内存块,对于大部分机器来说,一字节 阅读全文
posted @ 2017-10-10 14:16 GGBeng 阅读(423) 评论(0) 推荐(0) 编辑
摘要:我们在C学过了char字符类型。 在C++中,char是基本的字符类型,但却不仅仅有这一种字符类型! 一、char类型 char是基本的字符类型,一个char的空间应确保可以存放(机器基本字符集中)任意字符对应的数字值。 也即,一个char的大小和一个机器字节(8bit)一样。 二、其他字符类型 作 阅读全文
posted @ 2017-10-10 13:55 GGBeng 阅读(7508) 评论(0) 推荐(0) 编辑
摘要:前置递增运算符:先将运算对象加1,然后将改变后的对象作为求值结果(去使用)。 后置递增运算符:求值结果是运算对象改变之前的那个值的副本,也会将运算对象加1. 综合:前置版本的递增运算符,它将值加1后直接返回改变了的运算对象;而后置版本需要将原始值存储下来以便于返回这个未修改的内容。 小结:后置会增加 阅读全文
posted @ 2017-10-04 23:13 GGBeng 阅读(212) 评论(0) 推荐(0) 编辑
摘要:摘要:编译器生成的错误信息、常见错误 一、编译器生成的错误信息 1. 组成情况 2. 错误性质 编译器的一部分工作是寻找程序文本中的错误。 它没有能力检查一个程序是否按照其作者的意图工作,但可以检查形式上的错误。 二、常见的编译器可以检查出的错误 1. 语法错误(syntax error) 1 #i 阅读全文
posted @ 2017-10-02 12:03 GGBeng 阅读(1387) 评论(0) 推荐(0) 编辑
摘要:摘要:for循环头的组成、for的执行流程 一、for 语句的组成 0. 举个例子 for (int val = 1; val <= 10; ++val) sum += val; 1. 循环头的组成 初始化语句:int val = 1 循环条件:val <= 10 表达式:++val 2. 初始化语 阅读全文
posted @ 2017-10-02 11:31 GGBeng 阅读(231) 评论(0) 推荐(0) 编辑
摘要:摘要:为何必须包含main函数、main函数的返回值为啥是0 一、每个C++程序必须包含main函数 操作系统通过调用 main 来运行C++程序 二、main函数的返回值 1. 举个最简单的main函数作为例子 /* 此函数只返回给操作系统一个值 */ 2. main函数的返回值返回给谁?有何作用 阅读全文
posted @ 2017-10-02 09:29 GGBeng 阅读(859) 评论(0) 推荐(0) 编辑