C++
文章平均质量分 69
中年飞哥
读万卷书,行万里路!
展开
-
More Effective C++ 《异常》
异常都是人造的? 程序能够在存在异常的情况下正常运行是因为它们按照要求进行了设计,而 不是因为巧合。异常安全(Exception-safe)的程序不是偶然建立的。一个没有按照要求进 行设计的程序在存在异常的情况下运行正常的概率与一个没有按照多线程要求进行设计的 程序在多线程的环境下运行正常的概率相同,概率为 0。 异常处理作用 提高自己软件的正确性,强壮性和高效性。 Item M9:使用析构函数防止资源泄漏 auto_ptr可以有效解决构造函数内存泄漏问题。举例: 代码段1: ALA *pa = read原创 2021-03-01 23:16:16 · 98 阅读 · 0 评论 -
More Effective C++ 《基础议题》
Item M1:指针与引用的区别 (1)指针:指针是一个变量,只不过这个变量存储的是一个地址,指向内存的一个存储单元;而引用跟原来的变量实质上是同一个东西,只不过是原变量的一个别名而已。如: int a=1;int *p=&a; int a=1;int &b=a; 上面定义了一个整形变量和一个指针变量p,该指针变量指向a的存储单元,即p的值是a存储单元的地址,而下面2句定义了一个整形变量a和这个整形a的引用b,事实上a和b是同一个东西,在内存占有同一个存储单元。 (2)引用不可以为空,当被创原创 2021-01-19 19:13:25 · 126 阅读 · 0 评论 -
Head First设计模式-策略模式
什么是策略模式? 策略模式是指对一系列的算法定义,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。 分析下定义:策略模式定义和封装了一系列的算法,它们是可以相互替换的,也就是说它们具有共性,而它们的共性就体现在策略接口的行为上,另外为了达到最后一句话的目的,也就是说让算法独立于使用它的客户而独立变化,我们需要让客户端依赖于策略接口。 例子: •Calc...原创 2019-04-18 15:22:58 · 201 阅读 · 0 评论 -
C++ 重载、覆盖、隐藏的区别
C++ 重载、覆盖、隐藏的区别 重载: 1)相同的范围(在同一个类中); 2)函数名相同 3)参数不同 4)virtual关键字可有可无 5)与返回值类型无关 覆盖: 1)不同的范围(基类和派生类中) 2)函数名相同 3)参数相同 4)基类函数必须有virtual关键字 5)返回值类型必须相同 隐藏: 1)如果派生类的函数与基类的函数同名,但是参数不同。此时,不论有无virtual关键字,基类的...原创 2018-10-15 10:14:07 · 159 阅读 · 0 评论 -
C++学习总结
目录原创 2018-11-11 21:11:34 · 147 阅读 · 0 评论 -
C++ 强转
static_cast: 基类与派生类之间的转换;(基类–派生类不安全);内置内型之间的转换;把空指针转换为目标类型的空指针;把任何类型的表达式转换成void类型。 注:它不能转换const、volitale、_unaligned的属性 dynamic_cast: 必须是类的指针、引用或void*。 在上行转换(派生类—>基类)它和static_cast是一样的,但是在下行转换中它有类型检...原创 2018-11-11 21:30:53 · 234 阅读 · 0 评论 -
C++ 接口和抽象类
个人理解: 接口:主要是为了不同产品或者dll之间交互的桥梁,方便不同层级调用又不破坏被爆漏。这样当我修改另一个产品,只要接口不改变,其调用者完全不做改动。 抽象类:主要是为了代码复用,将其好几个子类的公共部分提成基类,只有一份,方便维护。 ...原创 2019-01-15 15:48:31 · 154 阅读 · 0 评论