摘要:
对象生存期和资源管理(RAII) RAII:Resource Acquisition Is Initialization,资源获取即初始化。是C++语言的一种管理资源、避免泄漏的惯用法。C++标准保证任何情况下,已构造的对象最终会销毁,即它的析构函数最终会被调用。简单的说,RAII 的做法是使用一个 阅读全文
摘要:
单例模式 单例模式是指确保一个类在任何情况下都绝对只有一个实例,并提供一个全局访问点。即:类在内存中只能存在一个示例对象 设计思路: 创建的对象肯定是要存入内存的,也就是用户态的那片空间(栈、堆、读写段、只读段),如果直接将类对象的创建放在类的外面,无论放在哪块区域都是行不通的。故需要强制不能在类外 阅读全文
摘要:
C++学习书单 By 陈皓 如何学好C++? 了解为什么要把C++设计成这样的原因——《C++演化和设计》 初级读物,了解语法等——《C++ Primer》或《C++程序设计语言》 《Effective C++》和《More Effective C++》 学习思考的方法——《C++沉思录》 积累各种 阅读全文
摘要:
二分查找 力扣题目链接 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。 示例 1: 输入: nums = [-1,0,3,5,9,12], target = 9 输出: 4 解 阅读全文
摘要:
STL_序列式容器 所谓序列容器,即以线性排列(类似普通数组的存储方式)来存储某一指定类型(例如 int、double 等)的数据,需要特殊说明的是,该类容器并不会自动对存储的元素按照值的大小进行排序。 序列容器大致包含以下几类容器: array< T,N >(数组容器):表示可以存储 N 个 T 阅读全文
摘要:
vector扩容问题 vector在尾部插入(push_back)时的扩容 void test3() { vector<int> num = {1,2,3,4,5}; cout << "num.size() = " << num.size() << endl; cout << "num.capaci 阅读全文
摘要:
值语义 指目标对象由源对象拷贝生成,且生成后与源对象完全无关,彼此独立存在,改变互不影响,就像int类型互相拷贝一样。C++的内置类型(bool/int/double/char)都是值语义,标准库里的complex<> 、pair<>、vector<>、map<>、string等等类型也都是值语意, 阅读全文
摘要:
#include <iostream> using std::cout; using std::endl; class Data { public: Data(int data = 0) : _data(data) { cout << "Data(int = 0)" << endl; } int g 阅读全文
摘要:
左值与右值 左值和右值有如下3个规则: 左值和右值都是表达式。 左值是对象定位器,理论上左值指示指示一个对象。 右值是一个临时值,其他位置无法访问这个值,通常情况下在语句执行完成后右值就被丢弃。 http://c.biancheng.net/view/281.html 左值:可以进行取地址的称为左值 阅读全文
摘要:
多态 虚函数 定义 在成员函数前面加上virtual关键字的函数,称为虚函数。 重定义(重写)的要求 基类与派生类中函数名要相同 函数的参数列表也要相同(参数的个数、类型、顺序) 函数的返回类型一致 小结:基类与派生类中的同名虚函数,除了函数体可以不一样之外,其他的全部都要保持一致。(函数名,函数返 阅读全文