自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 收藏
  • 关注

原创 C++ Primer 5e chapter 17.1

1、tuple,类似于pair,用于将一些数据组合成单一对象,又不想麻烦的定义一个类的时候,快速而随意的数据结构;2、访问tuple成员,使用get函数模板;3、常见用于是从一个函数返回多个值;4、bitset,用于支持位运算,类模板,有固定大小,bitset x(“1100”);5、bitset存在很多检测或者设置一个或多个二进制位的方法,可以方便的检查哪些位置位,设置哪些位需要

2015-08-31 22:50:06 459

原创 CODE COMPLETE 2e Chapter 11.1

1、完全、准确的描述出该变量所代表的事物,最好的名字获取方式;2、描述是什么,而不是如何? 选择 employData 而不是inputRec;3、长度9-15 10-16个字符长度;4、将计算限定值,如Total\ Min Max String Pointer Average Sum count Index等 放在名字的最后;5、使用对仗词,next previous;6、为

2015-08-25 16:45:28 352

原创 CODE COMPLETE 2e Chapter 10

1、在声明变量的时候初始化,第一次使用变量的时候声明和初始化;2、使用const定义常量;3、检查输入参数的合法性;4、尽可能的缩短变量的存活时间跨度小一些,使得不会在两次引用之间无意做了改变,而破坏了程序;5、把相关的操作语句组织到一起;6、尽可能做到变量局部化,有助于提高智力上的可管理性;7、绑定时间:把变量和值绑定在一起的时间,是在编写代码的时候(硬编码,神秘数值)?

2015-08-25 16:30:02 269

原创 C++ Primer 5e chapter 15.3

1、继承中的类作用域,派生类的作用域嵌套在基类中,出现在派生类的调用中的名字,首先在派生类中解析,然后在直接基类中,然后在上一个基类中...;2、注意不能使用一个已经转换为基类的派生类指针,来访问派生类的成员;3、派生类的同名成员将隐藏同名的基类成员,最好不要这样做,但是依然可以通过作用域运算符来访问基类的成员;4、名字查找优先于类型检查;所以声明在内层的同名函数不会重载外层作用域的函

2015-08-24 16:48:29 371

原创 C++ Primer 5e chapter 15.2

1、基类的引用或指针在调用虚函数的时候执行动态绑定,所以每一个虚函数都必须有定义,因为编译器不知道会执行哪一个虚函数,即使不想使用该虚函数,也要有定义;2、反之,使用对象的去调用虚函数的时候,编译期就能确定下来调用的版本;3、综上,当且仅当通过指针或者引用调用虚函数的时候,才会在运行期解析该调用,也只有这时,动态类型有可能和静态类型不一样;4、派生类中覆盖虚函数的时候不需要virtua

2015-08-24 13:28:12 321

原创 C++ Primer 5e chapter 15.1

1、所谓面向对象设计:数据抽象、继承和动态绑定(多态);数据抽象帮助我们把接口和实现分离,继承帮助我们更容易的定义和其他类相似但又不同的新类(是一个的关系),而多态帮助我们用相似的类编写程序时,在一定程度上可以忽略掉它们的区别;2、基类将类型相关的函数与派生类不做改变直接继承的函数区分对待,对于类型相关的函数加入关键字 virtual 虚函数;3、派生类声明: class A : publ

2015-08-24 12:46:54 313

原创 C++ Primer 5e chapter 14.2

1、函数调用运算符:成员函数,函数对象,仿函数,行为像函数一样,好处是可以存储很多状态相关的变量;妙用如下:class PrintString{public: PrintString(ostream &o = cout, char c = ' '):os(o), sep(c) {} void operator() (const string &s) const { os<

2015-08-23 21:07:09 385

原创 C++ Primer 5e chapter 14.1

1、除了函数调用重载运算符,其他重载不能含有默认参数;2、如果运算符是成员函数,则参与运算的左侧对象默认绑定到this指针对象,所以这个时候形参列表要比真正的运算符参数少一个;3、无法重载内置类型的运算符,比如 int operator+ (int, int);4、绝大多数运算符可以重载,除了少数一些,比如::,.* ;5、应该保证重载后的运算符具有原来的意思;6、当面对重载函

2015-08-23 21:05:58 488

原创 C++ Primer 5e chapter 13.2

1、一个管理类外资源的类,必须定义拷贝控制成员,因为需要对类外的资源进行析构;2、通过拷贝控制,可以让类有两种行为,一种行为像值得类,每个拷贝之间互相独立;另一种行为像指针,每个拷贝共享同样的底层;3、赋值运算符:考虑自身给自身赋值的情况,大多数赋值运算符结合了析构函数和拷贝构造函数的工作,现将右侧的拷贝到局部临时对象,销毁左侧对象的成员,拷贝右侧的对象到左侧,返回本对象 P453 ; 

2015-08-22 23:09:30 451

原创 C++ Primer 5e chapter 13.1

1、拷贝两个、移动两个、析构函数一个,构成拷贝控制操作,编译器虽然会默认给出一个版本,但是有的时候不会工作,需要我们显式给出;2、拷贝构造函数定义:参数是自身类型的引用,通常是const A &,通常不应设置explicit关键字,因为涉及隐式调用;3、现在回头看,直接初始化和拷贝初始化的区别;4、A & operator= (const A&),重载赋值运算符,赋值运算符通常应该返回

2015-08-22 22:43:30 390

原创 CODE COMPLETE 2e Chapter 5

软件的首要技术使命:管理复杂读1、如何管理复杂度: 同一时间处理的本质复杂度减少到最低;2、设计目标:最小的复杂度、易于维护、松散耦合、可扩展性、可重用性、高扇入(多使用低层次的类)、低扇出(少使用同层次的类)、标准技术;3、设计的层次: 软件系统 - 子系统\包 - 类 - 子程序 - 子程序内部设计;4、如何设计? 找出现实世界的对象(辨别属性、确定操作、互相之间的操作

2015-08-22 16:37:32 407

原创 CODE COMPLETE 2e Chapter 8&9

1、防御式编程:发生危险时保护自己的操作,比如输入数据非法时;2、检查所有来自外部输入的值、检查子程序输入参数、决定如何处理错误的输入数据;3、断言的使用,C++标准的assert宏不支持文本信息,可以自己写一个#define ASSERT(condition, message){ \ if ( !condition ) {

2015-08-22 16:20:35 624

原创 CODE COMPLETE 2e Chapter 7

1、为什么要创建子程序? 降低复杂度(抽象)、引入简单易懂的抽象、避免代码重复、隐藏顺序、简化复杂的布尔判断、改善性能;2、循环,判断嵌套层次较深时,考虑抽象子程序;3、子程序应当有很高的内聚性,即所执行的操作和名字完全相符,不做其他任何事情;4、封装顺序的内聚性(把有顺序关联的操作封装起来);5、反例: Startup() shundown() initialALL(),都是临时

2015-08-22 16:09:59 431

原创 CODE COMPLETE 2e Chapter 6

程序员的首要使命:管理复杂服1、类的目标:开发程序其他部分时,可以安全的忽视程序中尽可能多的其余部分,总体目标是像在现实世界一样操作实体,而不必在意底层的实现;2、隐藏实现细节(修改一处而达到修改所有其他地方)、容易日后提高性能、程序的自我说明性更好;3、类的接口设计:展现出一致的抽象层次、强内聚性、提供成对的服务、把不相关的信息转移到其他类中、尽量让接口可编程而不是表达语义(

2015-08-22 15:21:37 437

原创 C++ Primer 5e chapter 12

1、只能指针 ,shared_ptr unique_pty weak_ptr;2、使用 make_shared (args)来动态分配内存,返回shared指针;3、共享指针,有一个引用计数,计数器变为0则销毁动态对象;主要用于,程序不知道自己使用多少个对象(如STL容器)、程序不知道对象的准确类型、程序需要在多个对象间共享数据; 注意智能指针可以利用类的默认构造、析构、拷贝和赋值构造函数

2015-08-22 12:52:34 450

原创 C++ Primer 5e chapter 11

1、顺序容器定义:按照在容器中的位置来顺序保存和访问; 关联容器:按照关键字来保存和访问;2、关联容器分类:是否允许关键字重复— multi ,是否有序—ordered : map(关联数组,映射) set(集合) multimap multiset unoedered_map(哈希组织) ... 3、pair类型的对象,first second 公有成员,索引map会得到一个pair对象

2015-08-22 12:46:02 704

原创 C++ Primer 5e chapter 10.2

1、插入迭代器:front_inserter, back_inserter 插入位置始终是首或者尾,inserter(容器,迭代器)则不一样,在迭代器位置后面插入;2、流迭代器,istream_iterator in(cin),这样可以利用算法来完成流的操作,同时支持类类型的输入输出工作;3、算法迭代器分类:输入、输出、前向、双向、随机访问迭代器;4、对于双向链表和单链表,由于无随机访

2015-08-21 19:50:48 398

原创 C++ Primer 5e chapter 10.1

1、容器类并未提供很多操作,只是提供了简单的插入,删除等操作,但是标准库提供了一套泛型算法,使用迭代器作为接口,使得这些算法可以无差别应用于各类容器;2、find方法,前两个参数为范围迭代器,第三个参数是待查找的值,成功则返回第一个等于给定值的迭代器,失败则返回第二个参数;一个问题是算法需要存储元素的某种操作,例如比较操作,但是算法同时提供了我们自己写函数来代替的接口,例如谓词函数;3、算

2015-08-21 18:33:48 387

原创 C++ Primer 5e chapter 9.2

1、vector capacity()方法,reserve(n)方法,resize(n)方法,shrink_fit退回暂时不需要的空间;2、string提供了和C字符串接口的许多方法,string.substr()操作,支持了多样化的操作,P323;3、find方法,返回第一个字符的下标,rfind,最后一次出现的位置,find_first_of,find_last_of,返回字符串中人任

2015-08-21 17:58:26 809

原创 C++ Primer 5e chapter 9.1

1、容器包括:顺序容器,存储的是元素的值,访问元素使用位置即索引、关联容器(有序,无序),使用key-value;2、顺序容器:vector可变数组  deque双端队列 list双向链表 forward_list单向链表  array固定大小数组  string 字符串;3、其中vector 和 string 是内存连续存储的,提供快速访问下标操作,但是中间插入和删除比较耗时,list和

2015-08-21 15:24:22 430

原创 C++ Primer 5e chapter 8

1、 I/O :iostream fstream sstream(stringstream),后两者继承于前者;2、IO对象无拷贝无赋值操作;3、流的状态 while(cin >>word) 时时检查,检查流的状态有很多函数 P280;4、何时会刷新缓存:程序结束、缓存区满、cerr、关联流;endl换行刷新,ends 空格刷新,flush直接刷新;5、文件操作,打开方式可以显式指

2015-08-21 09:05:41 376

原创 C++ Primer 5e chapter 7

1、数据抽象和封装是类的基本思想,数据抽象依赖于接口和实现分离的技术。 接口即类的public函数成员和数据成员,实现即类的私有数据和函数;2、const成员函数,常量对象,常量对象的引用或者指针都只能调用常量成员函数;3、类在编译的时候先编译成员的声明,在编译成员函数的定义;4、类的非成员函数,尽管它们的操作属于接口的组成部分,但是实际上不属于类本身,通常声明在类的头文件中;5、

2015-08-20 20:45:17 388

原创 C++ Primer 5e chapter 6

1、函数无法返回数组,可以返回数组的指针;2、函数参数传递方式,引用传递,值传递,(指针传递类似于值传递,局部拷贝改变不改变实体),引用或者常引用是比较合适的方法;3、传递参数忽略顶层const,也就是说形参是const,实参可以传递const或者非const;同时由于形参忽略const,所以不能如此重载一个函数,重定义;4、可变形参的函数:类型相同时,可以传递initializer_

2015-08-20 19:30:20 425

原创 C++ Primer 5e chapter 5

1、switch语句,case分支一般都要有break,否则会匹配后继续执行下面的case,直到结束;2、do {} while();3、goto label; label:.....;4、try{} catch(){} catch(){};5、throw runtime_error("fwesfew"):6、C++的异常类:exception、runtime_error、ra

2015-08-20 15:48:42 300

原创 C++ Primer 5e chapter 4

1、左值与右值,右值是对象的内容,左值为对象的内存地址;2、条件判断中赋值运算符的优先级比逻辑运算符低,所以记得加括号;3、++i,首先将i加1,然后将改变后的对象作为求值结果;i++,则相反;4、*p++ = *(p++);5、位运算在处理有符号数的时候,且为负值,如何处理依赖于机器,左移可能会改变符号位,所以尽量使用无符号数字做位运算;6、int+unsigned int

2015-08-20 15:29:37 417

原创 C++ Primer 5e chapter 3

1、using声明尽量不要出现在头文件中,尤其是大程序;2、string的初始化方式,直接初始化和拷贝初始化;3、string.size 无符号整形;4、char的谓词函数有很多,判断是否为数字,符号,字母等等...5、范围for循环语句,VS2010似乎还不支持,注意使用引用作为循环变量;6、vector的列表初始化;7、迭代器的妙用,begin,end,cbegin,c

2015-08-20 11:20:22 347

原创 C++ Primer 5e chapter 2

1、char、 signed char、 unsigned char,不同,char随着不同编译器不同而不同;2、无符号数的强制类型转换,超过最大值则取模,有符号数则会产生未定义的行为;3、表达式中既有有符号数又有无符号数,会出现异常,有符号数会转变为无符号数,切记不要混用;4、赋值不等于初始化;5、c++11 支持列表初始化,花括号;6、初始化每一个变量;7、声明的意义:

2015-08-18 22:02:53 645

原创 C++ Primer 5e chapter 1

1、C++每个表达式都有一个计算结果;cin,cout的返回值是左侧的对象;2、 while for循环的执行顺序;while 判断,执行循环体;for,判断,执行循环体,递增循环变量;3、流 stream 当作 if或while内的判断时;4、重定向技术, exe outfile,当前目录中;

2015-08-18 20:41:08 280

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除