- 博客(6)
- 收藏
- 关注
原创 [读书笔记] 深入探索C++对象模型-第七章-站在对象模型的尖端(中)
继续整理最后一章的内容,这一篇是关于异常处理的。注:初学markDown,所得尚少,排版简陋,多多包涵欲支持异常处理,编译器的主要工作是找出catch子句,追踪程序堆栈中每一个函数的当前作用域,编译器必须提供某种查询异常对象的方法,以知道其实际类型(RTTI来源),最后,编译器还需要某种机制管理被丢出的对象,包括其产生,存储,析构,清理。C++异常处理语法由三部分组成: 1. throw,抛出异常
2016-10-26 22:00:37 410
原创 解析C++中的new、operator new、operator new[]和delete、operator delete、operator delete[](下)
注:以下测试均在VS2015下进行,其他编译器可能会有轻微差别。继续整理第二部分的内容。二、operator new/delete,以及其对应的数组版本new[]/delete[]。operator new优先调用全局重载的,所以::operator new(sizeof(COperatorTest))和operator new(sizeof(COper
2016-10-23 23:28:13 1972
原创 解析C++中的new、operator new、operator new[]和delete、operator delete、operator delete[](上)
最近在为一个Base项目实现需求,看到了大量的重载operator new/delete的轮子代码,而这方面之前并没有过多去关注,于是花了点时间,查一查资料,写了写Demo的代码,总算是对C++中new/delete这一家族的成员有了个了解。我们一一来看。1. new/delete以及对应的数组版本new[]/delete[]操作符(operator)。这两组可以看作是一家的,也是我们
2016-10-19 23:28:06 2350
原创 [读书笔记] 深入探索C++对象模型-第七章-站在对象模型的尖端(上)
整理最后一章的内容,关于模板,异常处理以及运行时类型信息的(RTTI: Run Time Type Information)。
2016-10-17 23:20:22 406
原创 [读书笔记] 深入探索C++对象模型-第六章-执行期语义学(下)
继续整理第六章剩下的内容,关于临时对象的几条准则。1. 在某些情况下,编译器可以产生必要的,或者可以带来方便的临时对象,具体行为由编译器来定义。例如,对于如下操作:T a, b;T c = a + b;//T operator+ (const T&, const T&)a. 编译器会产生一个临时对象,放置a+b的结果,然后使用T的拷贝构造函数,把临时对象当作c的初始值。b. 另外一种
2016-10-11 21:26:47 348
原创 [读书笔记] 深入探索C++对象模型-第六章-执行期语义学(中)
国庆假期小栖,继续整理第六章的内容。关于new和delete运算符。a. 使用new运算符构造对象时, 例如:Point3d* origin = new Point3d;会被转化为两个操作:分配空间和调用类的构造函数:Point3d* origin;if(origin = __new(sizeof(Point3d))){ origin = Point3d
2016-10-08 23:57:53 308
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人