随笔分类 -  C++

摘要:p187~p199: 【传值参数】 【传引用参数】 使用引用形参返回额外信息:传入一个(或者多个)额外的引用实参,令其保存字符出现的次数。 6.11 6.12 6.13 void f(T)中的T在调用函数的时候将拷贝实参的值,而voidd f(&T)中的T则是传入实参的临时别名。 6.14 感觉几乎 阅读全文
posted @ 2017-03-20 09:09 xkfx 阅读(428) 评论(0) 推荐(0)
摘要:p186~p188: 函数声明1、函数只能定义一次,但是可以声明多次。 2、函数的接口:返回类型 + 函数名 + 形参类型 3、为什么要在头文件中进行函数声明???在源文件中定义?暂时理解到,这么做可以增强可读性。 4、含有函数声明的头文件应该被包含到定义函数的源文件中。(例如:#include " 阅读全文
posted @ 2017-03-19 09:12 xkfx 阅读(398) 评论(0) 推荐(0)
摘要:p182~p185: 函数1、在调用函数和执行return语句的同时,也发生了控制权的转移。 2、函数返回值不能是一个数组。(但是可以返回一个包含数组的对象,或者指向数组的指针) 3、重要概念:名字的作用域和对象的生命周期。 4、对象的生命周期分两种情况:一种是对象定义在函数体外部(包括main函数 阅读全文
posted @ 2017-03-18 10:31 xkfx 阅读(198) 评论(0) 推荐(0)
摘要:p172~p177:c++的try语句块和异常处理: 1、通常,与用户交互的代码和对象相加(底层的代码)是分离开的,异常由与用户交互的代码处理(底层代码抛出异常就可以了)。 2、C++的runtime_error和Java的有很大的不同!!! 3、编写异常安全的代码非常困难。 4、寻找处理代码的过程 阅读全文
posted @ 2017-03-16 15:06 xkfx 阅读(210) 评论(0) 推荐(0)
摘要:p170~p172:跳转语句:1、break:对while for switch有效!2、continue:中断当前迭代,但是循环还要继续。因此对while for有效,对switch无效!3、goto:不要使用! 练习: 5.20 #include <iostream> #include <str 阅读全文
posted @ 2017-03-15 16:15 xkfx 阅读(854) 评论(0) 推荐(0)
摘要:p164~p170: 大致内容 迭代语句 1、while语句。 2、传统for。 3、范围for。两个注意点是:1- 通常使用auto来确保类型相容,2- 如果需要修改元素则需要使用&符(还可以避免拷贝元素)。 4、do while。两个特点:1- 条件部分不允许定义变量,2- 不管条件怎么样,都确 阅读全文
posted @ 2017-03-14 09:30 xkfx 阅读(199) 评论(0) 推荐(0)
摘要:p159~p164:switch语句1、例程:统计文本中五个元音字母出现的次数。(利用输入输出重定向测试) input.txt output.txt 2、case label必须整型常量表达式。 3、switch内部的控制流:如果没有break;将从该标签往后顺序执行所有的case分支。 4、def 阅读全文
posted @ 2017-03-13 08:50 xkfx 阅读(233) 评论(0) 推荐(0)
摘要:P154~p159:语句1、通常情况下顺序执行。 2、C++提供一组控制流(flow-of-control)语句以支持更复杂的执行路径。 3、空语句的作用:语法上需要一条语句,但是逻辑上不需要。 注意:使用空语句时加上注释,提高可读性。 4、复合语句的作用:语法上需要一条语句,但是逻辑上需要多条语句 阅读全文
posted @ 2017-03-10 14:03 xkfx 阅读(145) 评论(0) 推荐(0)
摘要:p143~p151:其他隐式类型转换1、数组转换成指针,大多数表达式自动转换成指向数组首元素的指针。 2、指针的转换。 3、转换成布尔类型,例如在if (condition) 中。 4、转换成常量。 5、类类型定义的转换。 显式转换1、尽量避免强制类型转换,但有时候不得不使用强制类型转换。 2、格式 阅读全文
posted @ 2017-03-09 15:05 xkfx 阅读(141) 评论(0) 推荐(0)
摘要:p140~p144:逗号运算符1、特点:1)规定运算顺序,即由左向右。2)逗号运算符的真正结果是右侧表达式的值! 练习 4.31 使用后置的运算符会有额外的内存开销, 在这道题中使用前置和后置结果貌似是一样的,不需要改。。。 练习 4.32遍历ia中的元素。ix代表元素下标,ptr逐个存放对应元素的 阅读全文
posted @ 2017-03-06 21:10 xkfx 阅读(169) 评论(0) 推荐(0)
摘要:p135~p140:1、位运算符。作用于整数类型的运算对象,并把运算对象看成是二进制的集合,提供检查和设置二进制位的功能。 2、bitest:一种可表示任意大小的二进制位集合的标准库类型。 3、关于符号位如何处理没有明确的规定,所以强烈建议仅将位运算符用于处理无符号类型。 4、移位运算符:对运算对象 阅读全文
posted @ 2017-03-05 10:07 xkfx 阅读(235) 评论(0) 推荐(0)
摘要:p131~p135: 1、除非必要否则不使用后缀加加(减减),会有额外的性能开销。 2、混用解引用和递增运算符。*pointer++,后缀运算符优先于解引用运算符。 3、运算对象可按任意顺序求值,即使是在赋值号两侧也无法确定究竟哪边先求。 p133 1、点运算符和箭头运算符。ptr->mem等价于( 阅读全文
posted @ 2017-03-04 20:30 xkfx 阅读(176) 评论(0) 推荐(0)
摘要:p129~p131: 1、赋值运算的左侧运算对象必须是一个可修改的左值。 2、赋值运算满足右结合律。 3、赋值运算的结果是它的左侧对象,并且是一个左值。 验证: 4、赋值运算符的优先级较低,在条件语句中,赋值部分应该加上括号。 练习 4.13 练习 4.14 if (42 = i) // ... 编 阅读全文
posted @ 2017-03-03 12:43 xkfx 阅读(200) 评论(0) 推荐(0)
摘要:p126~p128: 1、关系运算符作用于算数类型和指针类型。 2、逻辑运算符作用于任意能转换成布尔类型值的类型。 3、以上两种运算的运算对象和运算结果都是右值。 4、逻辑与和逻辑或的运算策略:短路求值。 (左侧对象通常是为了确保右侧运算对象求值过程的正确性和安全性) 5、补充的几点: 1)用 &s 阅读全文
posted @ 2017-03-02 15:10 xkfx 阅读(126) 评论(0) 推荐(0)
摘要:p124~p126: 算数运算符 1、形如+ -(一元) * / % + -(二元)为算数运算符。 2、所有算数运算符都满足左结合律。 3、算数运算符的运算对象和求值结果都是右值。 4、在表达式求值之前,所有运算对象最终会转换成同一类型。 5、整数相除的结果还是整数,如果商含有小数部分直接舍去,没有 阅读全文
posted @ 2017-02-27 09:09 xkfx 阅读(184) 评论(0) 推荐(0)
摘要:p120~p124: 表达式 1、表达式由一个或者多个运算对象组成。 2、最简单的表达式是字面值和变量。 3、一元运算符作用于一个运算对象,二元则作用于两个。一个运算符到底是几元由上下文决定。 4、重载运算符。仅改变运算对象和返回值的类型,运算对象的个数,运算符的优先级、结合律无法被改变。 5、左值 阅读全文
posted @ 2017-02-23 14:09 xkfx 阅读(143) 评论(0) 推荐(0)
摘要:p115~p118: 1、区分int *p[4];和int (*p)[4];。前者是整型指针的数组,后者是指向含有4个整数的数组。 2、规避上述问题的方法就是:使用 auto和 decltype。 3、对于a[3][4],有p = &a[0];(相当于p = a;)则 *p 为a[0]。(解引用后仍 阅读全文
posted @ 2017-02-22 14:03 xkfx 阅读(144) 评论(0) 推荐(0)
摘要:p111~p114: 与旧代码的接口 1、C++程序中的C风格字符串:任何出现字符串字面值的地方都可以以空字符结束的字符数组来替代。 2、如果程序的某处需要一个C风格字符串:利用 s.c_str()返回。 示例: 输出结果: 3、使用数组初始化 vector对象。 (用于初始化 vector对象的值 阅读全文
posted @ 2017-02-21 14:22 xkfx 阅读(147) 评论(0) 推荐(0)
摘要:p109~p110: C风格字符串 特点: 1、不方便,不安全,尽量不使用。 2、必须以 '\0'结束。(只有这样才能使用C风格字符串函数) 3、一般利用指针操作这些字符。 4、可以用字符串字面值来初始化字符数组。 练习 3.37 这道题输出有点奇怪。。。 输出结果: 练习 3.38 搬运。 练习 阅读全文
posted @ 2017-02-20 21:00 xkfx 阅读(105) 评论(0) 推荐(0)
摘要:p105~p108: 1、迭代器与数组的不同:迭代器的索引值必须是无符号类型,数组的索引无此要求。 2、使用数组的时候编译器一般会把它转化为指针。 3、auto ia2(数组名);的结果是:获得一个指向ia的第一个元素的指针。 4、decltype(数组名) ia3;的结果是:获得一个数组。 5、指 阅读全文
posted @ 2017-02-19 09:42 xkfx 阅读(169) 评论(0) 推荐(0)