
C++独孤九剑
从内存和编译器的角度,学习C++中的常用机制。
尚书左仆射
我喜欢按照不按套路出牌的套路出牌。
展开
-
C++独孤九剑第九式——以静制动(模板编程探索)
在C++编程中,抽象层次最高的应该算是模板了吧。模板是泛型编程的基础。所谓泛型编程,就是以独立于任何特定类型的方式编写代码。把相关的类型也抽象出来,使我们的代码可以适应所需要任何类型!哇塞,想想都觉得好高端,有木有(*^-^*)模板可以看成是创建特定类或者函数的蓝图或公式。模板实例化函数或者类并不是先实例化一个列表,然后再里面挑你需要的;而是在你的确需要的时候才为你实例化一个将要用到的实例。模原创 2016-06-29 21:58:45 · 3118 阅读 · 0 评论 -
C++独孤九剑第八式——平沙落雁(运行时浅剖析)
《平沙落雁》又名《雁落平沙》,是一首汉族古琴名曲,其意在借大雁之远志,写逸士之心胸。当然,这些都是“文人雅士”的说法,其实我就是看了《笑傲江湖》,对令狐冲的“屁股向后,平沙落雁式”印象比较深罢了(~ ̄▽ ̄)~C++编译器有时会在我们不知不觉的情况下为我们做一些事情,有时候运行时的代码也许会和我们编写的代码有较大的出入。说实在的,要完全掌握C++的运行时难度颇大,所以我在本式中写的是“浅剖析原创 2016-06-25 22:05:45 · 3166 阅读 · 0 评论 -
C++独孤九剑第七式——庖丁解牛(各种重载操作)
庖丁解牛,庖丁指的是编译器,而我们则是提供牛的人,牛就是被重载的操作。当编译器遇到被重载的操作,能够准确地找出合适的一个,犹如庖丁解牛,游刃有余。重载主要分为函数重载和操作符重载。函数重载应该大家都会稍微熟悉一些,操作符可能略显生疏。但是不管怎样,我们讨论完后肯定会有更深刻的理解。一、函数重载(成员或非成员)具有相同名字而形参表不同的多个函数形成了函数的重载。注意:仅返回值不同是不能形成函数重载的...原创 2016-06-23 16:59:12 · 2309 阅读 · 1 评论 -
C++独孤九剑第六式——洞若观火(深入对象操作)
在前面的几式中,虽说我们已经比较详细的探讨了对象的种种操作(构造、复制构造、赋值操作符、析构),但是我感觉还是差了一点深度,所以在这一式中进一步加深,直击对象内部的操作过程。真正做到“知其然,且知其所以然”。叙述终究是无法面面俱到的,但是我相信,在我们讨论的几种情况的基础上,小伙伴们也能对我们尚未探讨的情况作出正确的判断(*^-^*)一、对象直接构造1.无继承简单类对于类中全部原创 2016-06-18 17:11:33 · 2610 阅读 · 0 评论 -
C++独孤九剑第五式——人生几何(对象复制控制)
对酒当歌,人生几何? 譬如朝露,去日苦多。人的一生可能惊涛骇浪,更可能波澜不惊,这次我们就来探讨一下“对象”(当然各位同学自己的对象不在本次讨论范围之内O(∩_∩)O,课后自己讨论吧)一生的“起起落落”,即对象的复制控制。复制控制包括三个部分:复制构造函数的调用、赋值操作符的调用、析构函数的调用。下面就这三个操作来逐一进行介绍,大家共同学习(*^-^*)一、复制构造函数复制原创 2016-06-16 17:06:38 · 2173 阅读 · 0 评论 -
C++独孤九剑第四式——菩提无树(构造函数语意)
菩提本无树,明镜亦非台。本来无一物,何处惹尘埃!如果没有构造函数的辛勤劳作我们的编程世界也是空无一物(当然是站在面向对象的角度,也排除了一些特殊情况)。那么构造函数又是如何帮我们构造“万物”的呢?嘻嘻,人家待会儿再告诉你。先说人生三大错觉:股票要涨,房价要跌,她还爱我。使用构造函数也经常有错觉,比如:当我们没有定义任何构造函数时,编译器总是会帮我们生成默认构造函数;编译器合成的默认构造函数原创 2016-06-08 22:59:13 · 3009 阅读 · 0 评论 -
C++独孤九剑第三式——鱼跃于渊(多态机制实现)
鱼跃于渊,过而成龙,变幻万千。我们都知道面向对象的三大特征:1.封装 2.继承 3.多态多态是建立在前面两个特征的基础之上的,可以算得上是面向对象的“终极应用”。从小处来看,多态拥有根据不同“环境”调用不同函数的能力;从大处来看,多态可以实现类似操作系统中调用回调函数的效果(cocos2d-x框架中就利用了C++多态的特性)。在本式中,将主要和大家一起探索函原创 2016-06-06 16:45:39 · 3652 阅读 · 0 评论 -
C++独孤九剑第二式——众妙之门(函数处理机制)
玄之又玄,众妙之门。我们的程序都会用到函数,函数的调用过程看似简单易懂,实则“玄之又玄”(先营造一下氛围)。下面本文会对各种类型的函数进行一些探究,并和大家一起学习函数方面的知识。在正式进入函数的探究之前,先介绍一些书在讲函数时可能会碰到的两个概念。概念1:函数名称mangling即编译器会为我们的函数名加上一些修饰,使它在程序中独一无二。具体的名称修饰算法不同的编译器可能会有原创 2016-06-01 20:48:26 · 2501 阅读 · 1 评论 -
C++独孤九剑第一式——拨云见日(对象内存模型)
归妹趋无妄,无妄趋同人,同人趋大有。甲转丙,丙转庚,庚转癸。子丑之交,辰巳之交,午未之交。风雷是一变,山泽是一变,水火是一变。乾坤相激,震兑相激,离巽相激······好了,要背心法的同学请课后自行背诵。 特别说明:本系列并非严格按照《独孤九剑》的剑式进行命名,来学剑招的请自备传送卷轴,恕不报销往返机票。之所以称之为“拨云见日”,就是要在这招中和大家一起揭开C++对象内存的迷雾原创 2016-05-30 20:13:16 · 2874 阅读 · 2 评论