随笔分类 -  C++ Primer 4th 笔记

1
摘要:定义函数指针模板: bool (*pf)(const string &, const string &); *pf两端的括号是必须的使用函数指针: 1 #include <iostream> 2 using namespace std; 3 int func(int a, int b) 4 { 5 阅读全文
posted @ 2020-06-25 00:07 幻想Elapse 阅读(140) 评论(0) 推荐(0) 编辑
摘要:const is irrelevent for nonreference parameters 对于非引用传参,复制形参时并不考虑形参是否为 const——函数操纵的只是副本,但在在函数里面,const和非const的形参是有区别的有 const 引用形参的函数与有非 const 引用形参的函数是不 阅读全文
posted @ 2020-06-24 12:25 幻想Elapse 阅读(306) 评论(0) 推荐(0) 编辑
摘要:构造函数是特殊的成员函数 在冒号和花括号之间的代码称为构造函数的初始化列表 如果没有为一个类显式定义任何构造函数,编译器将自动为这个类生成默认构造函数 const 成员函数不能修改调用该函数的对象,只能读取而不能修改调用它们的对象的数据成员why?const成员函数的this指针被隐含地修改为con 阅读全文
posted @ 2020-06-24 12:14 幻想Elapse 阅读(351) 评论(0) 推荐(0) 编辑
摘要:inline 函数避免函数调用的开销 定义并使用一个inline函数 1 #include <iostream> 2 using namespace std; 3 inline const string& longer(const string &s1, const string &s2) 4 { 阅读全文
posted @ 2020-06-23 22:23 幻想Elapse 阅读(188) 评论(0) 推荐(0) 编辑
摘要:函数声明由函数返回类型、 函数名和形参列表组成。 形参列表必须包括形参类型,但是不必对形参命名。 这三个元素被称为函数原型, 函数原型描述了函数的接口。 1 #include <iostream> 2 using namespace std; 3 double func(double a = 555 阅读全文
posted @ 2020-06-22 22:02 幻想Elapse 阅读(154) 评论(0) 推荐(0) 编辑
摘要:求最大公约数: 1 #include <iostream> 2 using namespace std; 3 // recursive version greatest common divisor program 4 int rgcd(int v1, int v2) 5 { 6 if (v2 != 阅读全文
posted @ 2020-06-22 18:30 幻想Elapse 阅读(342) 评论(0) 推荐(0) 编辑
摘要:一般情况下,返回类型是 void 的函数使用 return 语句是为了引起函数的强制结束,这种 return 的用法类似于循环结构中的 break 语句(第 6.10 节)的作用 1 //cstdlib 头文件定义了两个预处理变量,分别用于表示程序运行成功和失败: 2 #include <cstdl 阅读全文
posted @ 2020-06-22 18:04 幻想Elapse 阅读(1652) 评论(0) 推荐(0) 编辑
摘要:类似于局部变量,函数的形参为函数提供了已命名的局部存储空间 函数不能返回另一个函数或者内置数组类型,但可以返回指向函数的指针,或指向数组元素的指针的指针 每次调用函数时,都会重新创建该函数所有的形参,此时所传递的实参将会初始化对应的形参。形参的初始化与变量的初始化一样:如果形参具有非引用类型,则复制 阅读全文
posted @ 2020-06-21 19:26 幻想Elapse 阅读(135) 评论(0) 推荐(0) 编辑
摘要:while(cin >>xxx) 可以输入后立即判 switch default语句,即使没有什么要执行的,也要加上,后面用空语句填上, 告诉读者这种情况已经考虑到了,只是没有必要执行。 case后必须是整型常量 对于 switch 结构,只能在它的最后一个 case 标号或 default 标号后 阅读全文
posted @ 2020-06-17 23:16 幻想Elapse 阅读(257) 评论(0) 推荐(0) 编辑
摘要:算术操作符 1. 21 % -5; // machine-dependent: result is 1 or -4 21 / -5; // machine-dependent: result -4 or -5 2. 溢出 关系操作符与逻辑操作符 3. bool 类型可转换为任何算术类型——bool 阅读全文
posted @ 2020-06-10 23:48 幻想Elapse 阅读(273) 评论(0) 推荐(0) 编辑
摘要:1. 即数组的数组 2. 多维数组定义 ap是数组指针 3. ap指向第二个数组 等同于: 4. 指针数组 5. 利用typedef定义数组指针类型 6. 用指针和typedef输出二维数组 7. 不使用typedef 阅读全文
posted @ 2020-05-24 12:18 幻想Elapse 阅读(127) 评论(0) 推荐(0) 编辑
摘要:1. 2. 3. const对象的动态数组 4. 创建长度为0的动态数组是合法的,但不能对返回的指针进行解引用 该指针加减0,或减去本身,得0 5. delete [] array;//回收array所指向的数组 6. string类程序比C风格字符串执行得快 7. c_str() 8. 用数组类型 阅读全文
posted @ 2020-05-19 19:40 幻想Elapse 阅读(142) 评论(0) 推荐(0) 编辑
摘要:1. 字符串字面值的类型是cosnt char类型的数组 2. strncat和strncpy 阅读全文
posted @ 2020-05-19 18:57 幻想Elapse 阅读(166) 评论(0) 推荐(0) 编辑
摘要:1. 定义:string *pstring;//强调pstring是一个指针 而非:string* pstring;//容易被误解为string*是一种类型,当string* str1,str2时,str2可能被认为是一个指针,其实它是一个string对象 2. 将指针初始化为0,编译器可以检测出零 阅读全文
posted @ 2020-05-18 18:32 幻想Elapse 阅读(121) 评论(0) 推荐(0) 编辑
摘要:1. 非const变量与要在运行阶段才知道其值的const变量(如const unsigned sz = get_size(); ,需要运行时调用函数 )才能作为数组维数 2. const a = 20; int b[a+1]; //合法,因为在编译时可以知道a+1的值为21 3. 函数体内,加{} 阅读全文
posted @ 2020-05-16 23:06 幻想Elapse 阅读(118) 评论(0) 推荐(0) 编辑
摘要:1. bitset<10> a;//a有10位,每位是0 bitset<10> a1(a);//a1是a的一个副本 bitset<16> b(0xffff);//b有16位,每位是1 bitset<32> c(0xffff);//c有16位,0-15是1,16-31是0 //初始化长度超过bitse 阅读全文
posted @ 2020-05-16 12:50 幻想Elapse 阅读(136) 评论(0) 推荐(0) 编辑
摘要:1. 容器的bengin()指代第一个元素,end()不指向任何元素,只起哨兵作用,表示已经处理完vector中的所有元素 iterator解引用:*it 2. iterator的自增:向前移动 由于end()不指向任何元素,不能对其使用解引用或者自增操作 3. 用iterator遍历vector 阅读全文
posted @ 2020-05-08 15:54 幻想Elapse 阅读(133) 评论(0) 推荐(0) 编辑
摘要:1. vector初始化: s2为s1副本: n个相同元素: 值初始化: 用一个由库生成的初始值初始化元素,具体值取决于元素类型 可见string类型是初始化为空串,int类型初始化为0 显然:空间在初始化时已经申请 2. 二维vector:> >有空格 s含三个元素,每个元素是大小为4的vecto 阅读全文
posted @ 2020-05-08 12:41 幻想Elapse 阅读(132) 评论(0) 推荐(0) 编辑
摘要:1. string类型初始化: string s3;//s3为空串 2.getline() getline(string,n); 开头不忽略换行符,不忽略空格,而cin会,返回时忽略换行符 。 3. s.size() 算上空格 4. s.empty(); 5. size == 0 ->empty() 阅读全文
posted @ 2020-05-07 20:31 幻想Elapse 阅读(151) 评论(0) 推荐(0) 编辑
摘要:1. 声明:extern i; 2. 将循环边界用一个变量标志,方便修改,使用const限定符, const int buf_size = 100; 3. const定义的变量默认是局部变量,不能被其他文件访问, 如有需要,extern const int i; 非const 变量默认为extern 阅读全文
posted @ 2020-05-07 19:07 幻想Elapse 阅读(545) 评论(0) 推荐(0) 编辑

1
点击右上角即可分享
微信分享提示