
C++
文章平均质量分 82
steph_curry
这个作者很懒,什么都没留下…
展开
-
C++ primer阅读之特殊工具与技术
第十九章特殊工具与技术1.使用new时,本质上执行了三步操作。第一步是调用了operator new或operator new[]标准库函数分配内存。这部分可以自己定义。2.malloc和free函数。注意和new与delete的区别。3.dynamic_cast运算符。将基类指针或引用安全转换为派生类的指针引用。可以不包含虚函数。4.typeid运算符。5.使用RTTI:如何去判断连个对象相等(类型相同,成员取值相同)。解决方法:typeid先判断两个运算对象类型是否一致,然后再调..原创 2020-10-21 17:49:37 · 122 阅读 · 0 评论 -
C++ primer阅读之用于大型程序的工具
第十八章用于大型程序的工具1. throw类似return,后面的语句不再执行。2.如果一个异常没有被捕获,将终止当前程序。3.析构函数不该抛出它不能处理的异常。4.异常对象。抛出指针的对象必须存在,没有销毁。5.匹配的catch语句是最靠前的第一个匹配的,它不一定是最优的。6.catch语句中可以重新抛出异常对象,throw。7.catch(...)可以捕获所有类型异常。8.处理构造函数初始值异常的唯一方法是讲构造函数写成函数try语句块。9.noexcept异常说明.原创 2020-10-20 21:42:50 · 237 阅读 · 1 评论 -
C++ primer阅读之标准库特殊设施
第十七章 标准库特殊设施1.tuple可以看作一个快速而随意的数据结构。tuple的构造函数是explicit的,必须直接初始化。还可以make_tuple。2.访问tuple的成员,get(),如果不知道tuple准确的类型细节,可以用tuple_size和tuple_element来辅助。3.两个tuple只有具有相同数量成员才可以比较。4.bitset使得位运算使用更加容易,可以处理超过最长整形类型大小的位集合。5.regex_search只要找到一个匹配子串就会停止查找。6.原创 2020-10-20 19:39:31 · 119 阅读 · 1 评论 -
2020-10-19
第十六章 模板和泛型编程1.和面向对象编程一样,泛型编程也可以处理编写程序时不知道类型的情况。前者可以处理运行前未知的情况,后者在编译时可知。2.模板:template <typename T>,模板参数列表不可为空。类型参数T前面必须有calss或者typename.3.模板参数列表里可以有非类型模板参数,它的实参必须是常量表达式。4.模板程序应该尽量减少对实参类型的要求。5.模板的头文件通常既包括声明也包括定义。模板直到实例化的时候才能生成代码。6.在类外定义类模板的原创 2020-10-20 00:33:29 · 196 阅读 · 0 评论 -
C++ primer阅读之面向对象程序设计
1.三个基本概念:数据抽象,继承和动态绑定。2.使用基类地引用或指针调用一个虚函数时将发生动态绑定。3.基类通常定义一个虚析构函数,即使不执行任何操作。4.基类希望它的派生类有权访问,但是禁止其他用户访问,protected成员。5.C++新标准允许派生类显式地注明它使用某个成员函数覆盖了它继承的虚函数。override。6.派生类到基类的隐式转换。7.首先初始化基类的部分,然后按声明的顺序依次初始化派生类的成员。最好用基类的构造函数来初始化从基类继承来的成员。8.基类的静态成员原创 2020-10-18 20:09:08 · 139 阅读 · 0 评论 -
C++ primer阅读之重载运算与类型转换
第14章重载运算与类型转换1. 当一个重载的运算符时成员函数时,this绑定到左侧运算对象,成员运算符函数显式地参数量比运算对象地数量少一个。2.我们把运算符定义为成员函数时,它地左侧运算对象必须是所属类地对象。3.具有对称性的运算符,一般定义为普通的非成员函数。比如算术和关系运算符。4.输入输出运算符必须是非成员函数。5.类如果同时定义了算术运算符和相关的复合赋值运算符,则应用复合赋值来实现算数运算符。6.赋值运算符必须是成员函数。7.下标运算符必须是成员函数,同时需要定义常.原创 2020-10-18 18:01:39 · 127 阅读 · 0 评论 -
C++ primer阅读之拷贝控制
第十三章 拷贝控制1. 拷贝构造函数第一个参数必须是自身类类型的引用。否则不会成功。2.注意直接初始化和拷贝初始化的区别。3.赋值运算符,以=为例:Foo& operator=(const Foo&);通常返回一个指向其左侧运算对象的引用。4.拷贝构造和拷贝赋值区别:前者产生新对象,后者是在已有对象上赋值。5.析构函数释放对象使用的资源,并销毁对象的非static数据成员。无返回值和参数。不可被重载。6.需要析构函数的类也需要拷贝和赋值操作。合成析构函数不会delet原创 2020-10-18 11:44:25 · 121 阅读 · 0 评论 -
C++ primer阅读之关联容器和动态内存
第11章1. 对map,关键字是const,不可改变。set里的关键字也是不可改变的。2.map的insert操作:返回值是一个pair,first成员是一个迭代器,指向元素,second是插入成功与否。3.erase参数可以是迭代器或者key。4.对map使用下标,注意和数组使用下标的区别。5.访问元素:find,count,lower_bound和upper_bound。可以组合lower_bound和upper_bound来获得一个范围。二者组合的功能和equal_range一样。原创 2020-10-17 12:24:43 · 157 阅读 · 0 评论 -
C++ primer阅读之泛型算法
第十章泛型算法1.泛型算法可用于不同类型的元素和多种容器类型。2.大多数算法定义在<algorithm>,标准库还在<numeric>中定义了一组。3.迭代器算法不依赖容器,但以来元素类型的操作。4.关键概念:算法永远不会执行容器的操作,它永远不会改变底层容器的大小。5.只读算法:find, accumulate.迭代器一般用cbegin和cend. equal算法,假设第二个容器的元素至少和第一个一样多。6.写容器的算法:向目的位置迭代器写入数据的算法假..原创 2020-10-16 20:49:19 · 244 阅读 · 0 评论 -
C++ primer阅读之IO库和顺序容器
第八章 IO库1.IO类:ifstream和istringstream都继承自istream。普通流,文件流和string流。2.IO对象不可拷贝或赋值。只能通过引用的方式来使用,且不能加const,因为读写会改变其状态。3.刷新和写操作是两个过程,一般系统讲多个输出组合成单一的写操作。操作符endl,flush和ends可以实现刷新缓冲区,但各有不同。unitbuf和nonunitbuf了解。4.当一个fstream对象被销毁时,close会被自动调用。5. out模式打开文件会丢..原创 2020-10-16 13:37:18 · 116 阅读 · 0 评论 -
C++ primer阅读之语句
第四章表达式1.强制类型转换。int i,j; double s = static_cast<double>(j)/i;可以避免编译器警告。const_cast才能改变表达式的常量属性,但是执行写操作结果未定义。尽量避免强制类型转换。第五章语句1. 跳转语句:break, continue, break.2.throw,抛出异常。3.try{} catch(){}; catch负责处理代码抛出的异常。...原创 2020-10-14 21:42:28 · 158 阅读 · 0 评论 -
C++ primer阅读之变量与指针
第二章 变量和基本类型1. 显式访问全局变量,用操作符::2. 引用和指针是复合类型。3. 引用必须初始化;一旦引用被初始化为一个对象,就不能被指向到另一个对象。指针可以在任何时候指向到另一个对象;引用必须在创建时被初始化。指针可以在任何时间被初始化。引用不是对象,所以不能定义引用的引用。4. void*,任意类型的指针。只保存指向变量的地址,并不知道地址长度,因为不知道变量类型。因此也不能解引用。5. 理解复合类型的声明。变量的定义包括一个基本数据类型和一组声明符,int *p = &原创 2020-10-14 10:17:03 · 136 阅读 · 0 评论 -
C++ primer学习 12.19
一、关联容器关联容器通过键(key)存储和读取元素1.1 pair类型 pairanon; anon=make_pair(string("aaa"),5);//不加STring(),vc6.0会报错 cout<<anon.first<<endl;//通过.first与.second访问元素 return 0;2.2 map类型a、加上#include使用下标访问ma原创 2017-12-19 09:00:14 · 330 阅读 · 0 评论 -
typedef struct 和struct区分
1 首先://注意在C和C++里不同 在C中定义一个结构体类型要用typedef: typedef struct Student { int a; }Stu; 于是在声明变量的时候就可:Stu stu1;(如果没有typedef就必须用struct Student stu1;来声明) 这里的Stu实际上就是struct Stud转载 2017-12-24 20:52:23 · 136 阅读 · 0 评论 -
C++ primer学习12.20
一、类1.1构造函数没有返回类型,形参数无要求,以分号结尾。用class关键字定义的类,最开始没有写访问标号的成员是私有的,而struct则公有。class Sales_item{int a;//私有public: Sales_item():units_sold(0),revenue(0){}//不加分号,若不定义,只声明,则加。private: string isbn;转载 2017-12-20 13:28:28 · 246 阅读 · 0 评论 -
C++primer学习 12.17
一、头文件头文件一般包括类的定义、extern变量的声明和函数的声明。注意:头文件用于声明而非定义。(const对象可以);如:extern int ival=10,;是定义。 int ficl;没有加extern,所以是定义。为了避免头文件多重包含,我们采用预处理器变量:#ifndef SALESITEM_H#define SALESITEM_H#endif这保证原创 2017-12-17 19:21:28 · 239 阅读 · 0 评论 -
C++primer学习 12.18
一、函数1.1类的成员函数a、在类外定义成员函数double Sales_item::avg_price()const{ if(units_sold) return revenue/units_sold; else return 0;}::是作用域操作符。这种使用const的成员函数成为常量成员函数,不能改变调用该函数的对象。b、this指针的使用原创 2017-12-18 09:11:05 · 219 阅读 · 0 评论