C++
总结C++基础知识点
帅与
其人如鹏鸟,借风而起,浮游九万里,风息则止,梳拂风羽。
其势若江河,顺流而去,奔腾东南戏,不逾堤坝,逾者民弃。
展开
-
C++运算符重载
输入输出函数 <<函数 friend std::ostream operator<<(ostream & os ,Point p){ os<<p.x<<p.y; return os; } 由于做操作数为ostream对象,所以不能设置为成员函数进行调用所以采用friend函数形式;所有流对象不能进行复制所以参数和返回值采用引用形式。 ...原创 2021-05-01 15:08:55 · 131 阅读 · 0 评论 -
C++Primer TextQuery完整代码
TextQuery.h #ifndef TEXTQUERY_H #define TEXTQUERY_H #include <memory> #include <vector> #include <set> #include <string> #include <map> #include <iostream> using std::cout; //读入并解析文件,将解析结果存入QueryResult对象中 class Query.原创 2021-04-29 22:04:25 · 355 阅读 · 1 评论 -
智能指针总结
智能指针的必要性 为了避免由于资源操作不当导致的内存泄漏,采取通过对象生命周期实现对资源的管理。创建对象时托管资源,销毁资源实现资源的释放。其中,头文件中的智能指针类实现了上述功能。 智能指针分类及不同智能指针属性特征 auto_ptr<> weak_ptr<> unique_ptr<> 表达的是对象语义,不能进行赋值或拷贝构造。 内部定义了移动语义构造函数,可以通过std::move 进行赋值 可以使用get()方法获取所托管资源的地址 shared_ptr&l.原创 2021-04-25 20:33:13 · 170 阅读 · 0 评论 -
c++11移动语义
C++11移动语义特性 移动语义的必要性 C++11中将数据分为左值和右值。左值为分配内存地址存储在内存中的值。右值为存储在寄存器中但不分配内存地址的值。所以左值可以取地址而右值不可以取地址。 对于右值对象来说,想要将右值对象存放在容器或数组中会发生:根据右值构造新左值对象->销毁右值对象->将新产生的左值对象存放到容器中。为了简化这个过程的时间空间开销引进移动语义。 移动语义特性 移动语义是指将临时的右值对象构造一个新的左值对象,并且该左值对象不占用新的内存空间。 移动构造函数和移原创 2021-04-20 22:52:45 · 337 阅读 · 0 评论