代码改变世界

随笔分类 -  C++ Primer读书笔记

读书笔记:C++ Primer系列(14)—— C++函数及参数传递

2014-05-07 22:05 by Keiven_LY, 429 阅读, 收藏,
摘要: 一、函数 实际项目中,要实现的功能不是仅靠一些基本语句就可以实现的,通常需要将这些大的功能进行分解,分步骤完成。例如:要实现一个学生信息管理系统, 一个学生信息管理系统至少包括学生信息的添加、查询、删除、修改等功能, 这些功能要求就是对该系统的初步分解, 然后以查询功能为例对其继续分解, 查询 功... 阅读全文

读书笔记:C++ Primer系列(13)—— break、continue、goto语句

2014-05-06 15:20 by Keiven_LY, 282 阅读, 收藏,
摘要: 1. break语句用于跳出最近的while、do...while、for或switch循环语句,并将程序的执行权交给紧接被终止循环语句之后的语句。 break语句只能出现在循环或switch结构中,或者出现在嵌套在循环或switch结构中的if语句中; 当break出现在循环外或switch结... 阅读全文

读书笔记:C++ Primer系列(12)—— 类型转换

2014-04-29 16:27 by Keiven_LY, 478 阅读, 收藏,
摘要: 题记:类型转换就是将给定类型的表达式转换为另一种类型。C++中的转型可分为两种:隐式类型转换和显式类型转换。隐式转换隐式转换不需要任何转换运算符,编译器会自动根据类型兼容性进行不同类型之间的转换。一般情况下,在C/C++中这种转换多出现在基本数值类型上,其基本原则就是所需内存小的类型可以直接转换成内... 阅读全文

读书笔记:C++ Primer系列(11)—— 表达式

2014-04-28 17:08 by Keiven_LY, 257 阅读, 收藏,
摘要: 定义: 表达式(expression)是由一个或多个操作数(operand)通过操作符(operator)组合而成。1. 操作符——除法(/)和求模(%)注意:除法和求模两种运算,操作数都必须是整型,包括:bool、char、short、int和long类型,以及对应的unsigned类型如果两个操... 阅读全文

读书笔记:C++ Primer系列(10)—— 数组与指针(2)

2013-12-30 16:56 by Keiven_LY, 262 阅读, 收藏,
摘要: 题记:指针用于指向某个对象。与迭代器一样,指针提供对其所指向的对象的间接访问。与迭代器不同之处在于:指针用于指向单个对象,而迭代器只能用于访问容器内的元素。10.1 指针的定义与初始化事实上,指针保存的是某个对象的地址程序清单—011 string str("Hello World !");2 string *pStr=&str;3 cout using std::cin; using std::cout; using std::endl; int main() { int val=10; int *ip1=&val,*ip2=0; ... 阅读全文

读书笔记:C++ Primer系列(9)—— 数组与指针(1)

2013-12-26 22:01 by Keiven_LY, 208 阅读, 收藏,
摘要: 题记: 数组与指针是我们常见到的两个名词,但是要想弄明白,弄得透彻也不是件容易的事!与vector类似,数组也可以保存某种类型的一组对象,区别在于:数组的长度是固定的,一经创建,就不允许添加新的元素。数组没有获取其容量大小的size操作,也不提供push_back操作在其中自动添加元素。9.1 数组数组是由类型名、标识符和维数组成的复合数据类型。类型名规定了存放在数组中的元素的类型,维数指定了数组中包含的元素个数。数组的维数必须是值大于等于1的常量表达式(包含:整型字面值常量、枚举常量、用常量表达式初始化的整型const对象)。9.1.1数组的定义程序清单—01 1 int GetSize(. 阅读全文

读书笔记:C++ Primer系列(8)—— 标准库类型之bitset

2013-12-25 15:40 by Keiven_LY, 403 阅读, 收藏,
摘要: 题记: 本篇继续讲述另一种重要的标准库类型bitset,用于位处理操作。要使用bitset类必须包含相关的头文件。 #include using std::bitset;8.1 bitset对象的定义和初始化bitset类是一种类模版,在定义bitset时,要明确bitset含有多少位,必须在尖括号中给出它的长度值,如: bitset bitvec; //该语句定义了一个变量bitvec,含有32个位的bitset对象 表8-1 初始化bitset对象的方法8.1.1 用unsigned值初始化bitset对象当用unsigned long值作为bitset对象的初始值时,该值将转化为二进制. 阅读全文

读书笔记:C++ Primer系列(7)—— 标准库类型之iterator

2013-12-25 13:55 by Keiven_LY, 343 阅读, 收藏,
摘要: 题记: 继上篇所讲的vector,除了使用下标来访问vector对象的元素外,标准库还提供了另一种访问元素的方法:使用迭代器(iterator)。所有的标准库容器都定义了相应的迭代器类型,而只有少数的容器支持下标操作。迭代器是一种检查容器内元素并遍历元素的数据类型。7.1 容器的iterator类型每种容器类型都定义了自己的迭代器类型,如vector有: vector::iterator iter; //这条语句定义了一个名为iter的变量,它的数据类型是由vector定义的iterator类型7.2 iterator的相关操作begin和end操作每种容器都定义了一对命名为begin和en. 阅读全文

读书笔记:C++ Primer系列(6)—— 标准库类型之vector

2013-12-22 19:14 by Keiven_LY, 323 阅读, 收藏,
摘要: 题记: 继上一篇标准库类型string后,本篇继续讲述标准库类型中的容器(vector)。6.1 标准库vector类型vector称为容器,是同一种类型的对象的集合,每个对象都有一个对应的整数索引值一个容器中的所有对象都必须是同一种类型使用vector之前,必须包含相应的头文件,即: #include using std::vector;vector是一个类模版(class template)——使用模版可以编写一个类定义或函数定义,而用于多个不同的数据类型,但vector不是一种数据类型声明从类模版产生的某种类型的对象,需要提供附加信息,信息的种类取决于模版,如: vector ive.. 阅读全文

读书笔记:C++ Primer系列(5)—— 标准库类型之string

2013-12-22 16:05 by Keiven_LY, 418 阅读, 收藏,
摘要: 题记: C++处理提供基本数据类型外,还定义了一个内容丰富的抽象数据类型标准库,包括以下四种标准库类型:string、vector、iterator、bitset,本篇主要讲述string标准库。5.1 关于命名空间的using声明每个名字都需要一个using声明,且一个using声明一次只能作用于一个命名空间成员。如: using std::cin; using std::cout; using std::endl;注:在文件中可以直接使用: using namespace std;//这个将std中的所有成员都引用了在头文件中应该使用完全限定的标准库名字,如std::cout using. 阅读全文

读书笔记:C++ Primer系列(4)—— 关于const限定符

2013-12-18 22:35 by Keiven_LY, 317 阅读, 收藏,
摘要: 题记: 请看下面一段程序: for(int k=0;k!=100;k++) { .......... }出现两个问题:程序的可读性;程序的可维护性;首先,比较k与100有什么意义?为什么要跟100比较?100哪里来的?——100就像魔术般凭空冒出来一样,程这样的数为魔数(即:它的意义在上下文中没有体现出来)。这样一来,导致程序的可读性比较差;其次,如果此整个程序规模较大,100出现的次数上千上万次,假设要对其做修改,这样修改量绝对大啊!并且很容易出错,导致程序崩溃。这样一来,导致程序的可维护性较差。解决这两个问题的方法是使用一个初始化为100的对象,即: int max=100; for(in 阅读全文

读书笔记:C++ Primer系列(3)—— 关于变量

2013-12-18 14:23 by Keiven_LY, 273 阅读, 收藏,
摘要: 题记: 每一个变量都有特定的类型,该类型决定了变量在内存中的大小及位置、能够存储于该内存中的值的取值范围,以及可执行的操作。3.1 初始化 C++支持两种变量初始化形式:直接初始化和赋值初始化。如: int day=7;//赋值初始化形式 int day(7); //直接初始化形式注意:初始化与赋值两者的区别 初始化:创建变量并给它赋初值; 赋值:擦除对象当前值并新值替代针对不同的对象,初始化方式也有说法。对于内置类型来说,直接初始化与赋值初始化没有什么区别;但对于类类型对象,有些仅可以采用直接初始化的方式。这是由于类类型对象的初始化是通过定义一个或多个构造函数来控制类对象的初始化的。基本内. 阅读全文

读书笔记:C++ Primer系列(2)—— 整型赋值问题

2013-12-17 19:44 by Keiven_LY, 416 阅读, 收藏,
摘要: 知识储备:1. 有符号数与无符号数 有符号数和无符号数是针对二进制来讲的。 有符号数用最高位作为符号位,“0”代表“+”,“1”代表“-”;其余数位用作数值位,代表数值。 无符号数全部二进制均代表数值,没有符号位。即第一个"0"或"1"不表示正负。例如:无符号数: 1111 1111 值:255 1* 27 + 1* 26 + 1* 25 + 1* 24 + 1* 23 + 1* 22 + 1* 21 + 1* 20有符号数: 0111 1111 值:127 1* 26 + 1* 25 + 1* 24 + 1* 23 + 1* 22 + 1* 21 + 阅读全文

读书笔记:C++ Primer系列(1)—— 开篇

2013-12-16 20:46 by Keiven_LY, 329 阅读, 收藏,
摘要: 题记: 最近这半年一直处于找工作状态,各种笔试什么的,其中很多涉及到C++知识,自我感觉C++这块基础相当薄弱,所以从现在开始给自己打好基础,就从《C++ Prrimer》开始吧,希望自己能够一直坚持下去,希望各位大神指教!1.1 main函数每个C++程序都具有一个main函数,且main函数是唯一被操作系统显式调用的函数;每个函数必须包含4个元素:返回类型、函数名、形参、函数体; main函数的返回类型必须是int类型;1.2 输入输出流 我们在C++程序中,经常会看到cin、cout这两个表示输入输出的关键字。其实C++并未直接定义输入输出的任何语句,这种输入输出功能是由标准库来提供的. 阅读全文

读书笔记:C++ Primer系列(15)——构造函数与析构函数

2013-09-24 20:40 by Keiven_LY, 767 阅读, 收藏,
摘要: C++为类提供了两种特殊的成员函数,一种是构造函数,在对象创建时自动调用,用以完成对象成员变量等的初始化及其他操作(如为指针变量动态申请内存空间);另一种是析构函数,在对象撤销时自动调用,用以执行一些清理任务,如释放成员函数中动态申请的内存等。 一、构造函数      如果程序员没有显式地定义构造函 阅读全文