摘要: 1.1.为什么选择加倍(两倍)扩容?而不是根据固定容量扩容?(在copyFrom函数中同理申请了双倍空间内存的理由) 这里涉及到了一个成本分摊的概念。 假设我们初始容量为0的vector插入n个元素,这个n个元素可以定义为n=m*I,插入了I次, 固定扩容容量变为m。 (1)如果我们选择根据每次插入 阅读全文
posted @ 2019-06-19 19:21 Royzzzzz 阅读(489) 评论(0) 推荐(0) 编辑
摘要: 11.1.C++是怎么实现多态的? 多态分为静态多态和动态多态。静态多态是通过重载和模板技术实现,在编译的时候确定。动态多态通过虚函数和继承关系来实现,执行动态绑定,在运行的时候确定。 11.2.什么是虚函数?作用是什么? (1)基类希望其派生类进行覆盖的函数,定义为虚函数。 1 virtual v 阅读全文
posted @ 2019-06-17 17:43 Royzzzzz 阅读(155) 评论(0) 推荐(0) 编辑
摘要: 10.1.什么是智能指针?跟普通指针有什么区别? 是C++标准库给我们提供的用于管理动态对象的模板。行为和普通指针一样,但是主要区别在智能指针自动释放所指向的对象,避免造成内存泄漏。 10.2.智能指针的工作原理? (1)构造函数中计数初始化为1; (2)拷贝构造函数中计数值加1; (3)赋值运算符 阅读全文
posted @ 2019-06-13 22:41 Royzzzzz 阅读(142) 评论(0) 推荐(0) 编辑
摘要: 10.1.修饰局部变量,保持变量内容的持久。 声明为static的局部变量将存储在静态存储区,随程序的结束后销毁,而不是函数结束后。虽然static修饰的局部变量仍然“生存”,但是它不能脱离作用域外活动。 10.2.修饰全局变量和普通函数,相对于其他源文件,隐藏自身。 static修饰全局变量和普通 阅读全文
posted @ 2019-06-10 09:34 Royzzzzz 阅读(165) 评论(0) 推荐(0) 编辑
摘要: 9.1.为什么建议使用=defalut显示写出默认构造函数? 上面这段代码编译报错:没有找到合适的默认构造函数。有很多场景可能没办法面面俱到,但是从这里可以看出一些端倪,如果很简单的一个操作(习惯)让你避免了上述的问题,你应该每次都设置默认构造函数!当一个定义一个不使用任何初始值的类类型的时候! 9 阅读全文
posted @ 2019-06-09 20:59 Royzzzzz 阅读(87) 评论(0) 推荐(0) 编辑
摘要: 8.1.1栈展开 抛出异常时,将暂停当前函数的执行,开始查找匹配的catch子句。首先检查throw本身是否在try块内部,如果是,检查与该try相关的catch子句,看是否可以处理该异常。如果不能处理,就退出当前函数,并且释放当前函数的内存并销毁局部对象,继续到上层的调用函数中查找,直到找到一个可 阅读全文
posted @ 2019-06-08 23:37 Royzzzzz 阅读(138) 评论(0) 推荐(0) 编辑
摘要: 7.1.为什么不适用C的强制类型转换? C的强制转换表面上看起来功能强大什么都能转,但是转化不够明确,不能进行错误检查,容易出错。 7.2.static_cast static_cast用的最多,对于各种隐式转换,非const转const,void*转指针等, static_cast能用于多态想上转 阅读全文
posted @ 2019-06-08 14:47 Royzzzzz 阅读(153) 评论(0) 推荐(0) 编辑
摘要: 6.1.通过位运算得到内置类型的最小最大值 1 //获取int型的最大值 2 //get_int_max_1()可能会报错整型常量溢出 3 int get_int_max_1() { 4 return (1 << 31)-1; 5 } 6 int get_int_max_2() { 7 return 阅读全文
posted @ 2019-06-04 18:28 Royzzzzz 阅读(249) 评论(0) 推荐(0) 编辑
摘要: 5.1.C风格字符串的几个函数原型strlen,strcomp,strcat,strcpy 4 #include<string> 5 #include<cassert> 6 using namespace std; 7 //strlen 8 size_t str_len(const char *pt 阅读全文
posted @ 2019-06-03 22:45 Royzzzzz 阅读(148) 评论(0) 推荐(0) 编辑
摘要: 4.1.const的作用 (1)定义常量 (2)便于类型检查 const常量有数据类型修饰,而宏常量没有,const常量可以进行安全类型检查,如果缺少这一步,有可能发生异常错误。 (3)可以保护被修饰的东西防止被意外修改。 (4)可以很方便的进行参数的修改 (5)为重载函数提供参考 1 class 阅读全文
posted @ 2019-06-01 19:18 Royzzzzz 阅读(708) 评论(0) 推荐(0) 编辑