C++Primer 5e
WhateverYoung
这个作者很懒,什么都没留下…
展开
-
C++ Primer 5e chapter 13.1
1、拷贝两个、移动两个、析构函数一个,构成拷贝控制操作,编译器虽然会默认给出一个版本,但是有的时候不会工作,需要我们显式给出;2、拷贝构造函数定义:参数是自身类型的引用,通常是const A &,通常不应设置explicit关键字,因为涉及隐式调用;3、现在回头看,直接初始化和拷贝初始化的区别;4、A & operator= (const A&),重载赋值运算符,赋值运算符通常应该返回原创 2015-08-22 22:43:30 · 402 阅读 · 0 评论 -
C++ Primer 5e chapter 7
1、数据抽象和封装是类的基本思想,数据抽象依赖于接口和实现分离的技术。 接口即类的public函数成员和数据成员,实现即类的私有数据和函数;2、const成员函数,常量对象,常量对象的引用或者指针都只能调用常量成员函数;3、类在编译的时候先编译成员的声明,在编译成员函数的定义;4、类的非成员函数,尽管它们的操作属于接口的组成部分,但是实际上不属于类本身,通常声明在类的头文件中;5、原创 2015-08-20 20:45:17 · 403 阅读 · 0 评论 -
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 · 409 阅读 · 0 评论 -
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 · 289 阅读 · 0 评论 -
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 · 819 阅读 · 0 评论 -
C++ Primer 5e chapter 6
1、函数无法返回数组,可以返回数组的指针;2、函数参数传递方式,引用传递,值传递,(指针传递类似于值传递,局部拷贝改变不改变实体),引用或者常引用是比较合适的方法;3、传递参数忽略顶层const,也就是说形参是const,实参可以传递const或者非const;同时由于形参忽略const,所以不能如此重载一个函数,重定义;4、可变形参的函数:类型相同时,可以传递initializer_原创 2015-08-20 19:30:20 · 435 阅读 · 0 评论 -
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 · 439 阅读 · 0 评论 -
C++ Primer 5e chapter 10.1
1、容器类并未提供很多操作,只是提供了简单的插入,删除等操作,但是标准库提供了一套泛型算法,使用迭代器作为接口,使得这些算法可以无差别应用于各类容器;2、find方法,前两个参数为范围迭代器,第三个参数是待查找的值,成功则返回第一个等于给定值的迭代器,失败则返回第二个参数;一个问题是算法需要存储元素的某种操作,例如比较操作,但是算法同时提供了我们自己写函数来代替的接口,例如谓词函数;3、算原创 2015-08-21 18:33:48 · 400 阅读 · 0 评论 -
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 · 458 阅读 · 0 评论 -
C++ Primer 5e chapter 13.2
1、一个管理类外资源的类,必须定义拷贝控制成员,因为需要对类外的资源进行析构;2、通过拷贝控制,可以让类有两种行为,一种行为像值得类,每个拷贝之间互相独立;另一种行为像指针,每个拷贝共享同样的底层;3、赋值运算符:考虑自身给自身赋值的情况,大多数赋值运算符结合了析构函数和拷贝构造函数的工作,现将右侧的拷贝到局部临时对象,销毁左侧对象的成员,拷贝右侧的对象到左侧,返回本对象 P453 ;原创 2015-08-22 23:09:30 · 465 阅读 · 0 评论 -
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 · 315 阅读 · 0 评论 -
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 · 424 阅读 · 0 评论 -
C++ Primer 5e chapter 14.1
1、除了函数调用重载运算符,其他重载不能含有默认参数;2、如果运算符是成员函数,则参与运算的左侧对象默认绑定到this指针对象,所以这个时候形参列表要比真正的运算符参数少一个;3、无法重载内置类型的运算符,比如 int operator+ (int, int);4、绝大多数运算符可以重载,除了少数一些,比如::,.* ;5、应该保证重载后的运算符具有原来的意思;6、当面对重载函原创 2015-08-23 21:05:58 · 505 阅读 · 0 评论 -
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 · 392 阅读 · 0 评论 -
C++ Primer 5e chapter 15.1
1、所谓面向对象设计:数据抽象、继承和动态绑定(多态);数据抽象帮助我们把接口和实现分离,继承帮助我们更容易的定义和其他类相似但又不同的新类(是一个的关系),而多态帮助我们用相似的类编写程序时,在一定程度上可以忽略掉它们的区别;2、基类将类型相关的函数与派生类不做改变直接继承的函数区分对待,对于类型相关的函数加入关键字 virtual 虚函数;3、派生类声明: class A : publ原创 2015-08-24 12:46:54 · 322 阅读 · 0 评论 -
C++ Primer 5e chapter 15.2
1、基类的引用或指针在调用虚函数的时候执行动态绑定,所以每一个虚函数都必须有定义,因为编译器不知道会执行哪一个虚函数,即使不想使用该虚函数,也要有定义;2、反之,使用对象的去调用虚函数的时候,编译期就能确定下来调用的版本;3、综上,当且仅当通过指针或者引用调用虚函数的时候,才会在运行期解析该调用,也只有这时,动态类型有可能和静态类型不一样;4、派生类中覆盖虚函数的时候不需要virtua原创 2015-08-24 13:28:12 · 328 阅读 · 0 评论 -
C++ Primer 5e chapter 15.3
1、继承中的类作用域,派生类的作用域嵌套在基类中,出现在派生类的调用中的名字,首先在派生类中解析,然后在直接基类中,然后在上一个基类中...;2、注意不能使用一个已经转换为基类的派生类指针,来访问派生类的成员;3、派生类的同名成员将隐藏同名的基类成员,最好不要这样做,但是依然可以通过作用域运算符来访问基类的成员;4、名字查找优先于类型检查;所以声明在内层的同名函数不会重载外层作用域的函原创 2015-08-24 16:48:29 · 396 阅读 · 0 评论 -
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 · 477 阅读 · 0 评论 -
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 · 358 阅读 · 0 评论 -
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 · 388 阅读 · 0 评论 -
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 · 659 阅读 · 0 评论 -
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 · 714 阅读 · 0 评论