06 2021 档案
摘要:析构函数抛出异常会有什么后果 假设现在我们有一个类Widget class Widget{ public: ...; ~Widget() { // 这里抛出异常了 ...; } }; 然后我们创建一个Widget类型的的vector数组 int main(){ std::vector<Widget>
阅读全文
摘要:前面的铺垫有点多= = 我们考虑这样一种情况:有很多种计时方法,比如原子计时,水滴计时等。我们试图抽象出一个基类计时类,然后其他方法的计时器继承这个类。设计如下 class TimeKeeper{ public: TimeKeeper(); ~Timekeeper(); }; class Atomi
阅读全文
摘要:我们先定义一个房地产类 class HomeForSale{} 我们认为一个房地产应该是独一无二的,所以不希望他被拷贝或者赋值。所以我们希望下面的语句是错误的,编译器应该不予通过 int main() { HomeForSale h1; HomeForSale h2; HomeForSale h3(
阅读全文
摘要:一些说明 我们定义一个空类 class Empty {} 等价于 class Empyt { Empty() {} Empty(const Empty& rhs) {...} ~Empty() {} Empty& operator=(const Empty& rhs) {...} } 默认构造函数
阅读全文
摘要:其实如果了解了容器内部原理,就很好选择容器了。这个条款也只是依据容器的特性来谈的。 c++提供的容器 标准STL序列容器:vector、string、deque和list 标准STL关联容器:set、multiset、map和multimap 非标准序列容器:slist和rope 非标准关联容器:h
阅读全文
摘要:C++对于自动初始化变量没有一个明确的规定,跟编译器有关。因此,我们应该永远在使用对象之前先将它初始化。 int x = 0; const char* text = "A C-style string"; // input double d; std::cin >> d; 赋值与初始化 我们设计两个
阅读全文
摘要:const告诉编译器某个值不能是变化的。 修饰指针 const修饰指针的时候,只区分在*前还是*后。在前面表示指针常量,其指向的值无法通过这个指针改变;在后面表示常量指针,表示这个指针无法指向别的对象,但可以通过该指针修改该对象的值。 int a = 10; const int *p1 = &a;
阅读全文
摘要:#define用来定义常量。 首先我们需要知道,#define会在预编译的时候,以字符串替换的形式被替换掉。假设我们#define AspectRatio= 1.635。如果AspectRatio在使用的过程中报错,编译器会直接提示1.635。如果这个宏是其他文件定义的,那么对于使用者而言,他甚至都
阅读全文
摘要:题目 输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。 示例 1: 输入:head = [1,3,2] 输出:[2,3,1] 限制: 0 ⇐ 链表长度 ⇐ 10000 思路 倒置输出链表。这种倒置输出一般都可以递归的输出。如果题目可以占用额外空间,还可以先顺序一遍保存,然后倒序输
阅读全文
摘要:作者将C++分为四个板块,每个板块之间相对独立,但又有联系。 c语法 面向对象C++ 模板 STL C C++涵盖了C基本语法。对于c内置类型,传值比传引用高效。 Object-Oriented C++ 面向对象设计部分。类,封装,多态,继承,虚函数,动态绑定 Template C++ C++泛型编
阅读全文
摘要:题目 请实现一个函数,把字符串 s 中的每个空格替换成"%20"。 示例 1: 输入:s = "We are happy." 输出:"We%20are%20happy." 限制: 0 ⇐ 的长度 ⇐ 10000 思路 高级语言可以直接replace。如果用c的话,最简单的方法就是指到空格
阅读全文
摘要:题目 在一个的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 示例: 现有矩阵 matrix 如下: [ [1, 4, 7, 11, 15], [2, 5, 8, 12,
阅读全文