Skip to content

《C++百炼成仙》

第四卷:元婴破体·继承与多态


第二十五章 落叶之森·古阵遗踪

下山第三日,叶无痕踏入落叶之森。

这片古林横亘千鹤派东境三千里,林间常年弥漫淡青色瘴雾,地面堆积的落叶厚达数尺,人踏上去如行于棉絮。林中罕有人迹,唯偶尔可见千年前某位前辈留下的残碑断碣——那是千鹤派鼎盛时期遍布脚本大陆的传讯阵基遗迹。

叶无痕的任务,便是调查其中一座阵基的异常灵气波动。

他在林间穿行半日,终于在暮色四合时找到了目标。

那是一块三丈见方的青石基座,表面镌刻的灵纹大多已风化模糊,唯中央一道环形刻痕仍在缓慢流转淡金色微光。叶无痕蹲下身,以神识探入。

光纹回应了他的触碰,在他意识中展开一幅残缺的画面:

那是千年前的一个黄昏。

一位青衣剑尊站在这座阵基前,抬手在基座核心刻下最后一笔灵纹。

阵基亮起。

他转身,望向某个方向——那是千鹤派山门所在。

画面戛然而止。

叶无痕猛地撤回神识,心跳如鼓。

那青衣剑尊的面容……他看不清。但那道持剑刻符的身影、那截被风吹起的发带、那枚悬于腰间的枯黄玉佩——

与叶老寄身的戒指,形制一模一样。

——

是夜,叶无痕在阵基旁扎下营帐。

他将枯黄戒指取下,放在掌心,对着火光沉默了很久。

“叶老,”他轻声问,“这座阵基……是您千年前留下的吗?”

戒指没有应答。

他早知叶老不会应答——自筑基渡劫后,叶老便再未显形传音。有时叶无痕甚至觉得,那枚戒指已真的只是一枚枯黄的古物,与叶老残魂再无关联。

但他从未将它摘下。

此刻,他望着阵基上那圈淡金色的光纹,做了一个决定。

他要读懂这道灵纹。

——

他取出一枚空白玉简,以神识将阵基上的残缺纹路拓印下来。

光纹在他意识中重组、拆解、归位。那些看似杂乱无章的刻痕,在排除了千年风化造成的断损后,渐渐呈现出一种他隐约熟悉的规律——

这不是函数,不是数组,不是指针。

这是一种他从未修习过的、全新的术法结构。

拓印持续了整整两个时辰。

当最后一道纹路被完整录入玉简时,叶无痕的眉心已沁出细汗。他闭目调息,将那枚玉简举至眼前。

玉简中,灵纹静静悬浮,如一幅残破的古阵图。

他在阵图底部发现一行极小、极淡的刻字——那是刻阵者留给自己备忘的批注,被岁月磨去了大半,仅余四个字依稀可辨:

“……继承此阵……”

继承。

叶无痕心头一震。

——

元婴期·第一章 完


第二十六章 血脉相承·继承初现

叶无痕在林间枯坐一夜。

天亮时,他将阵基拓片收入怀中,取出墨渊长老所赠的《C++模板古经》。

他快速翻过熟悉的类法六关,在卷末寻到一行从未细读的小字:

“类法六关,金丹圆满。欲破元婴,须明继承。”

继承。

他翻过这一页。

经文以极小的古篆写着:

“修士有类,类有父子。子承父业,复开新途。”

下附一道简例:

cpp
class XiuZhe {
public:
    string name;
    int age;
    void speak() { cout << name << "在说话" << endl; }
};

class JianXiu : public XiuZhe {
public:
    int swordPower;
    void fly() { cout << name << "御剑飞行" << endl; }
};

叶无痕凝视那行class JianXiu : public XiuZhe。

剑修是修士的一种。

这句话他从前只会用日常语言理解。此刻,它被写成了天道能识别的灵纹。

他尝试依例造化:

cpp
JianXiu jian;
jian.name = "林涛";
jian.swordPower = 100;
jian.speak();   // 林涛在说话
jian.fly();     // 林涛御剑飞行

——子类拥有父类的全部属性和法门。

他又试:

cpp
XiuZhe* p = &jian;
p->speak();     // 允许,父类指针可指向子类对象

——子类对象是一种特殊的父类对象。

他怔怔看着掌心的晶片。

那枚名为jian的晶片,内里有五座洞府——其中三座是继承自父类的name、age、speak,两座是自己新增的swordPower、fly。

父类洞府在前,子类洞府在后。

内存布局——他下意识推算偏移量。

然后他停住。

因为他忽然意识到一件事:

继承,不只是代码复用。

是让万物回归其宗系。

——

叶无痕在玉简中写下第一段继承感悟:

“金丹修士视万物为类。元婴修士视类有宗。宗者,本源也。知本源,乃知演化;知演化,乃知万象。”

他搁笔,望向林外。

晨雾中,隐隐可见另一座更古老的阵基残骸。

他起身,朝那个方向走去。

——

元婴期·第二章 完


第二十七章 三脉七派·继承权限

叶无痕在落叶之森的第二日,遇见了意料之外的人。

林间小径尽头,一道霜白身影背对他而立,正以神识探入另一座阵基。

凌霜。

叶无痕脚步顿住。

凌霜似有所觉,转过身来。

两人对视三息。

“宗门任务?”叶无痕问。

“玄冰院也有阵基需要调查。”凌霜语气平淡,顿了顿,“这片林子的阵基,是千年前某位前辈为三脉七派所设。”

“三脉七派?”

“你不知?”凌霜微微扬眉,旋即似想起什么,“是了,你入门未满一年。青山院不教宗门史。”

她略作沉吟,难得主动解释道:

“千年前,千鹤派并非一统。彼时脚本大陆有三大C++宗门——千鹤、紫云、玄冰。三宗虽各自为政,却共尊一位剑尊。那位剑尊在三宗驻地之间布设了四十九座传讯阵基,以继承之法互联,一宗有警,三宗皆知。”

她指向脚下。

“这便是其中一座。”

叶无痕沉默片刻。

“那位剑尊……道号?”

凌霜看了他一眼。

“叶沧澜。”

——

两人一同探查阵基。

凌霜是玄冰院首席,筑基期便通晓指针、数组、类法,如今已凝成金丹。她的继承之学,显然远早于叶无痕。

她指着阵基灵纹,逐层拆解:

“你看,这座阵基的灵纹结构是典型的三层继承——基类ZhenJi定义核心通讯协议,派生类ChuanXunZhen添加传讯功能,再派生JuLiZhen添加距离感应。”

叶无痕凝神辨识。

果然。

他在拓片时未曾注意的那些嵌套纹路,在凌霜的点拨下,渐渐呈现出清晰的层次。

基类、派生类、再派生。

“继承有权限。”凌霜继续说,“public继承,子类保有父类的public/protected成员的原始权限;protected继承,父类的public/protected在子类中降为protected;private继承,一切降为private,子孙不可见。”

她顿了顿。

“那位剑尊立下的规矩是:三宗共尊,故基类核心以public继承;各宗内部扩展,以protected;若有机密,则private。”

叶无痕看着她。

凌霜察觉他的目光,微微侧首。

“你这是什么眼神?”

“……你为何知道这么多?”

凌霜沉默了一息。

“玄冰院藏经阁,顶层有一部《叶沧澜手札》。我入门第五年,读完了。”她语气平静,“其中关于继承权限的论述,我读了三年。”

叶无痕没有追问。

他只是将那部手札的名字记在心里。

——

元婴期·第三章 完


第二十八章 基座之重·基类构造

两日后,叶无痕和凌霜找到了第三座阵基。

这座阵基保存相对完整,基座中央的灵纹仍在稳定运转。凌霜以神识触碰,片刻后蹙眉:

“启动不了。”

叶无痕探入神识,也发现问题:

基类ZhenJi需要灵气核心才能运行,但这座阵基在构造时未传入核心参数。

他想起构造函数。

子类对象被造化时,必先调用父类构造函数。

若父类没有默认构造,子类必须在初始化列表中显式调用父类的带参构造。

他试着写:

cpp
class ZhenJi {
protected:
    int powerCore;
public:
    ZhenJi(int core) : powerCore(core) {}
    virtual void activate() { cout << "阵基启动,核心" << powerCore << endl; }
};

class ChuanXunZhen : public ZhenJi {
public:
    // 错误:父类无默认构造,子类必须显式调用父类构造
    ChuanXunZhen(int core) : ZhenJi(core) {}
    
    void activate() override {
        cout << "传讯阵启动,核心" << powerCore << endl;
    }
};

他将这段灵纹刻入阵基核心。

光纹闪烁三息,基座中央骤然亮起。

——阵基启动了。

凌霜凝视那行ChuanXunZhen(int core) : ZhenJi(core) {},良久不语。

然后她低声说:

“手札里写:‘子不知父,无以立身。故父先立,子方成器。’”

“我当时不懂。”

“现在我懂了。”

——

元婴期·第四章 完


第二十九章 剑同法异·虚函数

第四座阵基位于落叶之森最深处。

这座阵基已几乎完全损毁,基座上布满纵横交错的剑痕——那是千年前一场激战的遗存。叶无痕蹲下身,以指腹轻抚一道最深的刻痕。

他的灵根深处,那一丝“指针煞气”忽然剧烈震颤。

他抬头。

基座边缘,有一道极细、几乎被苔藓完全覆盖的灵纹。

他将苔藓拂去。

灵纹只有一行:

cpp
virtual void activate() = 0;

纯虚函数。

叶无痕的心跳陡然加速。

他认出这行灵纹的笔迹——与青石戒指内壁那行“何为道”,出自同一只手。

这是叶老千年前刻下的最后一笔。

——

凌霜察觉他的异常,走近。

她看了那行灵纹,也沉默了。

“纯虚函数。”她说,“以此法标记的函数,父类不给实现,子类必须覆盖。含有纯虚函数的类,不可实例化——是为抽象类。”

叶无痕没有答话。

他只是盯着那行= 0。

等于零。

零是nullptr,是混沌,是无。

那位青衣剑尊,在他最后一座阵基上,刻下了一个无法启动的纯虚函数。

——他不想让后人原样继承他。

他想要后人覆盖他。

——

叶无痕在那座损毁的阵基旁坐了一夜。

拂晓时,他取出一枚空白玉简,写下人生第一个虚函数:

cpp
class XiuZhe {
public:
    virtual void fight() {
        cout << name << "施展基础功法" << endl;
    }
};

class JianXiu : public XiuZhe {
public:
    void fight() override {
        cout << name << "施展剑法:万剑归宗" << endl;
    }
};

class DanXiu : public XiuZhe {
public:
    void fight() override {
        cout << name << "施展丹道:爆裂丹雨" << endl;
    }
};

他写下override。

这是C++11才有的关键字,千年前的叶老不曾用过。

但他知道,叶老若在,会赞许这个关键字。

因为覆盖——是后人对先贤最高的致敬。

——

凌霜看着那行XiuZhe* p = &jian; p->fight();。

“父类指针,调用子类方法。”

“嗯。”

“这是多态。”

“嗯。”

凌霜沉默片刻。

“手札里写:‘剑同而法异,谓之虚。’”她顿了顿,“我一直不懂。”

叶无痕没有回答。

他只是又一次运行了那段代码。

p->fight()——指向JianXiu对象,输出剑法;指向DanXiu对象,输出丹道。

相同的指针,相同的函数名。

不同的结果。

“这就是虚函数。”叶无痕说,“剑是同一种剑,持剑之人不同,剑招自异。”

凌霜望着那道灵纹,久久不语。

——

元婴期·第五章 完


第三十章 虚表天机·vtbl揭秘

叶无痕在落叶之森的第七日,终于破解了叶老留下的最大谜题。

那行virtual void activate() = 0并非孤立存在。它以极细的灵纹,与整座阵基的底层结构暗连。

叶无痕以神识循迹溯源,追踪了三层嵌套偏移,最终在阵基核心内存区的起始处,发现了一张从未见过的符箓。

那符箓不大,约莫指甲盖见方,悬浮在对象内存布局的最前端。符箓表面没有文字,只有一道淡金色的光晕,以及一个叶无痕从未见过的标记:

__vptr

虚函数表指针。

——

他花了一整天,才大致理解这张符箓的功用。

每一个含有虚函数的类对象,其内存首部都有一个隐藏指针,指向一张类专属的“虚函数表”。

虚函数表是一张函数地址列表,记录着该类所有虚函数的真实入口。

调用虚函数时,程序并非直接跳转到某个固定地址——而是先通过对象的__vptr找到虚表,再从虚表中索引对应的函数地址,最后跳转执行。

这就是多态能在运行时“识别对象真实类型”的根本原因。

叶无痕在玉简中画下虚表结构:

[对象 jian]          [类 JianXiu 的虚函数表]
+------------+       +--------------------+
| __vptr ----|-----> | &JianXiu::fight()  |
+------------+       | &JianXiu::fly()    |
| name       |       +--------------------+
+------------+
| swordPower |
+------------+

他将这张图看了很久。

多态不是法术,是数据结构。

——

当夜,叶无痕在玉简中写下长篇札记:

“虚函数表者,类之符籍也。表立而子孙各有其法,父执一指针,可御百子。”

“此法有代价:一曰内存,每对象多一指针;二曰时间,两次寻址,一次调用。”

“然此代价,换来的是:”

“——写父类代码者,不必预见所有子类。”

“——加新子类者,不必改动旧代码。”

“——千般术法,万种传承,皆可收于一指之间。”

“此谓开闭之则:对扩展开放,对修改封闭。”

他搁笔。

窗外月华如水。

他忽然想起,自己也曾是某个“父类”的子类。

那位千年前的青衣剑尊,是否也曾期待某个后人,能读懂他虚表中的万语千言?

——

元婴期·第六章 完


第三十一章 纯净道心·纯虚与抽象

第九日,叶无痕找到了最后一座阵基。

这座阵基位于落叶之森核心地带的一片空地上,四周寸草不生,地面焦黑——那是千年前某场大战的遗迹。

阵基中央,立着一柄半截没入地下的石剑。

剑身无锋,剑镡残缺,剑首系着一根早已朽烂的发带。

叶无痕走近,以指轻触剑身。

那一瞬,他“听见”了。

——不是声音,是残留在剑纹中的一行灵纹。

cpp
class CppXianRen {
public:
    virtual void daoTong() = 0;
    virtual ~CppXianRen() {}
};

纯虚析构函数。

他怔住。

纯虚函数——他已知。

但纯虚析构,他从未见过。

他翻遍玉简、遍寻记忆,终于从《C++模板古经》夹层中一行极隐晦的批注中找到答案:

“析构可为纯虚,然必须在类外给出定义。因其在子类析构时仍被调用。”

叶无痕在那柄石剑前盘膝坐下。

他试着揣摩叶老刻下这行灵纹时的心境。

CppXianRen——C++仙人。

这是一个抽象类,不可实例化。它的道统是纯虚的,没有默认实现。它的析构是纯虚的,却仍有定义。

——仙人已逝,道统犹存。后人欲承其业,须自行覆盖其法。

叶无痕在那柄石剑前坐了很久。

最后,他取出一枚空白玉简,刻下:

cpp
class CppXianRen {
public:
    virtual void daoTong() = 0;
    virtual ~CppXianRen() {}
};

class JinDanXiu : public CppXianRen {
public:
    void daoTong() override {
        cout << "金丹修士继承道统:类法六关" << endl;
    }
};

他将玉简轻轻放在石剑基座上。

晨光熹微。

——

元婴期·第七章 完


第三十二章 林中遇险·dynamic_cast

第十三日夜。

叶无痕正将今日拓印的阵基灵纹录入玉简,忽听远处传来一阵急促的破风声。

他敛息隐入树影。

三息后,一道身影踉跄奔至林间空地。

林涛。

他浑身浴血,右手倒提一柄残剑,左手死死按住腰侧一道深可见骨的伤口。他身后,三头浑身缠绕紫黑煞气的腐灵妖狼紧追不舍,为首那头已有半人高,利齿间犹自滴落腥臭涎液。

林涛冲到叶无痕藏身的大树前,终于力竭,单膝跪地。

他抬头,与树影中叶无痕的目光撞个正着。

二人对视一息。

林涛没有开口求救。

他只是死死盯着叶无痕,仿佛在等他做决定。

——

叶无痕跃出树影。

他没有拔剑。他在虚空中刻下一行灵纹:

cpp
class YaoShou {
public:
    virtual void attack() = 0;
    virtual ~YaoShou() {}
};

class FuLingYaoLang : public YaoShou {
public:
    void attack() override {
        cout << "腐灵妖狼撕咬攻击" << endl;
    }
};

他造化三头“腐灵妖狼”晶片——不是真狼,是仅用于类型识别的虚设对象。

为首那头真狼扑至他身前三尺时,他抬手:

cpp
YaoShou* p = &fakeWolf;  // 指向虚设对象
FuLingYaoLang* real = dynamic_cast<FuLingYaoLang*>(p);

dynamic_cast。

若p确实指向FuLingYaoLang对象,转型成功;若否,返回nullptr。

——这是运行时类型识别。

真狼没有灵智,无法理解这行代码。

但叶无痕写的不是攻击术法,是劫持。

他以虚设对象骗过真狼的仇恨判定,在三头妖狼的神识中制造了一瞬混乱。

就这一瞬,他左手拽起林涛,右手捏碎一张宗门配发的遁地符。

青光一闪,二人没入地下。

——

遁地符将他们送至三里外一座废弃阵基的地底密室。

叶无痕燃起灵火,检视林涛的伤势。

腰侧那道伤口深可见骨,是被妖狼利齿撕裂。林涛失血极多,脸色苍白如纸,却始终一声未吭。

叶无痕从怀中取出千叶昙花炼制的止血散,敷在伤口上。

林涛低头看着他的动作。

“……为什么不问?”

“问什么?”

“我为什么在这里。”

叶无痕没有抬头。

“你接了什么任务?”

林涛沉默片刻。

“落叶之森,采集寒铁矿。”他声音沙哑,“任务书上说……此矿无妖兽守护。”

叶无痕手下动作一顿。

寒铁矿,正是他们此刻所在的这座废弃阵基地底——确有矿脉,但矿脉入口分明盘踞着那三头腐灵妖狼。

任务信息有误。

——或者说,有人故意“误”。

——

林涛忽然笑了一声。

“你来救我……不怕是陷阱?”

叶无痕抬起头。

“你会拿自己的命设陷阱?”

林涛没有回答。

他只是别过脸,望着密室穹顶那片斑驳的阵基灵纹。

过了很久,他低声说:

“你之前问我,剑修类该如何写友元。”

他从怀里摸出一枚染血的玉简,递过来。

玉简上,是他新写的代码:

cpp
class QiLianXiu;

class JianXiu : public XiuZhe {
    friend class QiLianXiu;
    // ...
};

“器修类……可以访问剑修的私有属性,为剑开锋。”他声音很轻,“我写了,但不知对错。”

叶无痕接过玉简,看了一会儿。

“对的。”

林涛垂下眼睑。

密室中只有灵火噼啪轻响。

——

元婴期·第八章 完


第三十三章 父辈遗泽·虚析构

林涛的伤势稳定后,叶无痕才有余暇审视这座地底密室。

密室不大,约莫两丈见方。四壁镌刻着密密麻麻的灵纹,多为传讯阵的残余部分。中央有一座半人高的石台,台上悬浮着一枚婴儿拳头大小的晶石——那是阵基的灵气核心,竟仍在缓慢运转。

叶无痕走近,以神识探入。

晶石内封存着一道完整的虚函数表。

——以及一行极小的刻字:

“吾道后继有人,故设此阵以遗泽。后之览者,亦将有感于斯文。”

叶沧澜·千鹤历三千四百二十年春

——

叶无痕在那行刻字前站了很久。

然后他将晶石取出,托在掌心,对林涛说:

“帮我护法。”

林涛没有问他要做什么,只是拖着伤躯,提剑守在密室入口。

叶无痕盘膝坐下,将那枚晶石贴在眉心。

他“读”这道虚表。

这不是普通的虚函数表。

这是叶沧澜毕生所修十九道核心阵法的虚函数映射。

每一道虚函数,对应一座阵基;每一座阵基,对应一门C++绝学。

他从第一道开始继承:

cpp
class ZhenJi {
public:
    virtual void activate() = 0;
};

class ChuanXunZhen : public ZhenJi {
public:
    void activate() override {
        // 传讯阵法
    }
};

第二道:

cpp
class JuLiZhen : public ChuanXunZhen {
public:
    void activate() override {
        // 距离感应阵法
    }
};

第三道、第四道……

他在意识中一层层派生、一次次覆盖。

每继承一道虚函数,他灵根深处那一丝“指针煞气”便凝实一分。

不知过了多久——也许是一个时辰,也许是一夜——他睁开眼。

掌心的晶石已化为齑粉。

他体内,那枚七色金丹之上,赫然多了一道淡金色的裂痕。

丹破婴生。

——

林涛盯着他,瞳孔骤缩。

“你……元婴?”

叶无痕低头看自己的手。

没有异象,没有雷劫。

他只是觉得,神识覆盖的范围,比从前远了三倍。

他望向密室穹顶那片斑驳的阵基灵纹——千年前叶老亲手所刻——第一次真正读懂了那些纹路的走向。

这是一座以继承为骨、虚函数为枢的完整阵群。

四十九座阵基,四十九道虚函数,四十九种覆盖。

此刻尽数刻入他的神识。

——

他站起身,向那柄斜插在阵基中央的石剑走去。

这一次,他的手握住了剑柄。

剑没有拒绝他。

——

元婴期·第九章 完


第三十四章 返程·typeid疑云

叶无痕将那柄石剑从阵基中拔出。

剑身无锋,通体漆黑,分量极沉。剑格内侧刻着两个古篆:

沧澜。

他将剑收入储物戒,扶起林涛,从密室的另一条暗道离开落叶之森。

——

返程的路上,林涛一直沉默。

直到望见千鹤派山门,他才开口:

“你继承的那道虚表……十九道阵法的最后一式,是什么?”

叶无痕脚步顿住。

他没有答。

林涛没有追问。

他只是说:“你剑格内侧,有行小字。”

叶无痕低头。

剑格内侧,除了“沧澜”二字,确有一行几乎被磨平的刻痕。

他凑近辨认。

那是叶老写下的、从未被任何人读取过的——第十九道虚函数的名称:

typeid

——

元婴期·第十章 完


第三十五章 元婴回山·林元青的问话

叶无痕回到青山院时,林元青正在正殿等他。

掌尊坐在上首,手边那盏灵茶冒着热气,显然等了不止一时半刻。

“任务完成了?”

“是。”

叶无痕将那柄石剑取出,呈于案上。

林元青没有看剑。他盯着叶无痕眉心那道淡金色的元婴裂痕,沉默了很久。

“你破丹成婴了。”

“是。”

“在落叶之森?”

“是。”

“谁为你护法?”

叶无痕顿了顿。

“林涛。”

林元青的眉峰微微一动。

他没有追问细节,只是将石剑缓缓推回叶无痕手边。

“此剑名曰沧澜,是千鹤派失传千年的镇派之宝。”他声音低沉,“千年来,无数金丹巅峰、元婴修士试图入林取剑,无人成功。”

他看向叶无痕。

“它认你为主,你可知为何?”

叶无痕垂首。

“弟子……不知。”

林元青没有回答。

他只是起身,背对叶无痕,望着殿外竹影。

“藏经阁四层,你已有资格进入。”他说,“墨渊长老会将《RTTI真解》授你。”

他顿了顿。

“然后,你该去见一个人。”

“谁?”

林元青没有回头。

“太上大长老。”

——

元婴期·第十一章 完


第三十六章 藏经四层·RTTI真解

藏经阁四层,叶无痕第一次踏入。

这里没有书架,没有玉简,只有一方三丈见方的石室。四壁以整块黑玉砌成,玉面上流动着无数淡金色的符文——那是千年来历代大修士以神识刻下的心得。

墨渊长老立于室中央,手拄那根乌木拐杖。

“你继承沧澜剑尊遗阵十九道,元婴已成。”长老声音沙哑,“前十八道虚函数,是继承与多态。”

他顿了顿。

“第十九道,是typeid。”

叶无痕垂首:“弟子愚钝,不解此道何用。”

墨渊以杖尖轻点地面。

玉壁上的符文骤然大亮,在他二人之间凝成一行灵纹:

cpp
#include <typeinfo>
cout << typeid(x).name() << endl;

typeid——运行时获取对象的真实类型信息。

墨渊道:“多态之术,父类指针可指子类。然修士执此指针,只知其形,不知其实。若欲知指针所指之物的真实类名,当用此诀。”

叶无痕问:“既是运行时可辨,与虚函数表何异?”

“虚表授汝如何调法,typeid授汝此物是谁。”墨渊道,“一为术,一为名。名正则言顺,言顺则法通。”

他举杖,刻下第二道灵纹:

cpp
if (typeid(*p) == typeid(JianXiu)) {
    cout << "此乃剑修" << endl;
}

叶无痕凝视那行代码。

他忽然想起密室里叶老留下的那行刻字:

“typeid——此吾晚年所悟。以此为基,可构‘异派协约’之术。”

异派协约。

墨渊仿佛看穿他的心思,沉声道:

“你可知千年前,脚本大陆有三宗七派,功法各异,灵根有别。然每逢妖兽潮、魔修侵,三宗七派却能共御外敌,进退如一。”

“为何?”

墨渊没有直接回答。

他将拐杖重重顿地。

“因为他们签过一份协约。”

“协约以C++写成,以typeid为核,以dynamic_cast为钥。”

“这份协约,名为《异派标准》。”

——

叶无痕在藏经阁四层待了整整七日。

他将墨渊长老所授的《RTTI真解》读了三遍。

RTTI——Run-Time Type Information,运行时类型识别。

核心有二:

· typeid:查类之名,可比较是否同型。 · dynamic_cast:安全向下转型。成功则返子类指针,失败返nullptr。

他反复演练:

cpp
class YaoShou { virtual ~YaoShou(){} };
class FuLingLang : public YaoShou {};
class HanTieKu : public YaoShou {};

YaoShou* p = new FuLingLang;

if (FuLingLang* lang = dynamic_cast<FuLingLang*>(p)) {
    // p 确实是腐灵狼
} else if (HanTieKu* ku = dynamic_cast<HanTieKu*>(p)) {
    // p 是寒铁矿守护兽
}

安全向下转型——多态的最后一块拼图。

他想起落叶之森那一夜,自己用虚设对象劫持腐灵妖狼的神识。

那时若有dynamic_cast,何须虚设?

他忽然明白叶老刻下typeid的用意:

继承是父子相承,多态是父子异行。

但要让不同宗派、不同灵根的修士在同一套阵法中协同作战——

必须知道对方是谁,必须能安全地将父类指针转为子类指针。

必须有一份所有宗门都认同的“类型名册”。

这份名册,就是《异派标准》。

——

元婴期·第十二章 完


第三十七章 太上召见·千年尘封

第七日黄昏,叶无痕离开藏经阁。

阁外候着一名灰衣老仆,见他出来,躬身道:

“太上大长老有请。”

——

太上大长老的居所不在青山、绿水、玄冰三院,而在主峰之巅一座不起眼的竹庐中。

叶无痕推门而入时,老人正对着一面玉璧枯坐。

玉璧上无画无字,唯有一道残损的灵纹——那是半截未写完的代码,在某行中断,千年未续。

“你继承沧澜剑遗阵十九道,”老人没有回头,“可曾见他本人?”

叶无痕沉默片刻。

“弟子……有一枚戒指。”

他从颈间解下那枚枯黄古戒,双手呈上。

老人没有接。

他只是望着玉璧上那道残纹,许久,缓缓道:

“那是他留给你的。不是给我的。”

叶无痕将戒指收回掌心。

“前辈……叶沧澜剑尊,究竟是怎样的人?”

老人沉默了很长时间。

久到叶无痕以为他不会回答。

然后他开口,声音苍老如风化的石:

“他是一个……明知虚函数表每多一层、调用就慢三分,仍要为天下修士开多态之路的人。”

“他是一个……明知纯虚析构必须在类外定义、语法丑陋,仍要以此告诫后人‘仙人已逝,道统需覆盖’的人。”

“他是一个……明知C++已足够复杂、足够危险,仍要在晚年耗尽心血,写下那部《异派标准》的人。”

老人转过身。

浑浊的眼中,第一次泛起一丝几不可见的微光。

“他走那天,把这柄石剑插在落叶之森中央阵基。”

“他说:‘待有后人继承虚表十九道,剑自认主。’”

“然后他散功,兵解,残魂不知所踪。”

“我守这座竹庐,守这面玉璧,守他留下的那道未完成的代码——”

“守了一千两百年。”

——

叶无痕望着玉璧上那道残损的灵纹。

那也是一行纯虚函数。

比他在阵基上见到的更短,只有三个字:

virtual ~

没有类名,没有析构函数名,没有= 0,没有类外定义。

——这是叶沧澜生平最后一笔。

他写到“虚析构”三字时,灵力耗竭,神识溃散。

他没有写完。

——

叶无痕在玉璧前站了很久。

然后他抬起手,以指为笔,在那行残纹后面补上:

cpp
virtual ~CppXianRen() = 0;

——类外定义。

他写下:

cpp
CppXianRen::~CppXianRen() {}

空实现。

仙人已逝,析构函数无需实义。

但他要让这道灵纹完整。

——

老人望着那行补全的代码,久久不语。

最后,他挥了挥手。

“你去吧。”

叶无痕躬身退至门边。

他推门时,听到身后老人极轻、极轻的一声叹息:

“沧澜……你有后了。”

——

元婴期·第十三章 完


第三十八章 宗门夜话·凌霜的来访

叶无痕从竹庐回到青山院时,已是子夜。

他推门入室,灵火自亮。

然后他看见窗边立着一道霜白身影。

凌霜背对他,正望着窗外那丛他亲手栽种的剑竹。

“你继承沧澜剑遗阵十九道的事,宗门已经传开了。”她没有回头,“绿水院掌尊连夜发函,质疑你以筑基之躯入林、却携元婴道果而归,其中必有蹊跷。”

叶无痕没有答话。

“玄冰院不参与此事。”凌霜顿了顿,“我个人……信你。”

叶无痕沉默片刻。

“谢谢。”

凌霜转过身。

她看着他眉心那道淡金色的元婴裂痕,看了很久。

“你破丹时,是什么感觉?”

叶无痕想了想。

“像把从前写过的一万行代码,全部读了一遍。”

“然后呢?”

“然后发现,那些代码都不是我写的。”

凌霜微微扬眉。

叶无痕续道:

“整型、指针、数组、类、继承、虚函数……没有一行是我发明的。我只是前人语法树上的一个节点,将他们的智慧复刻一遍。”

他顿了顿。

“破丹那一刻,我想:我这一生,难道只是继承?”

凌霜没有答。

窗外竹影摇动。

过了很久,她轻声说:

“我读《叶沧澜手札》第五年,也问过自己同样的问题。”

“继承父类的全部,然后呢?”

她看向叶无痕。

“然后我读到一行他三十岁时写的注释。”

“——覆盖,是比继承更郑重的致敬。”

——

叶无痕怔住。

他忽然想起自己补全玉璧上那道纯虚析构时,心中那一丝微妙的释然。

他不是在模仿叶老。

他是在完成叶老未竟之事。

这就是覆盖。

——

凌霜离去后,叶无痕独坐窗前。

他将那柄沧澜古剑横于膝上,剑身漆黑,无锋无刃。

他轻声说:

“叶老,你当年写virtual ~CppXianRen() = 0,是想让后人帮你补全吧。”

戒指没有应答。

但他仿佛听见一千二百年前,某位青衣剑尊在这间静室中落笔时,对自己说:

“总有一日,会有人懂的。”

——

元婴期·第十四章 完


第三十九章 元婴大比·初战

叶无痕回宗第十日,宗门下达法旨:

“青山院元婴修士叶无痕,破格参加半月后元婴期宗门大比。”

“其道基未经宗门正统考核,需以实战验之。”

这道法旨背后的角力,叶无痕无心细究。

他只知道,半月后,他将面对千鹤派七位元婴中期以上的同门。

——元婴期首战,无一场可轻取。

——

首轮抽签,他抽中绿水院·卫庄。

卫庄,元婴中期,以一手“异常流剑法”闻名。据说他的剑招从不循常规路径,而是故意制造越界、空指针等未定义行为,诱使对手的神识陷入天道混沌,再一剑破之。

叶无痕见过他一次。

那是某次宗门演武,卫庄的对手是一位元婴后期的长老。长老持剑严阵以待,卫庄却只轻轻一抖剑尖——

数组越界。

他的剑招指向了一块根本不存在的内存地址。

天道混沌,神识反噬。长老的剑阵在三息之内崩碎三成。

叶无痕当时旁观,只觉匪夷所思。

有人竟能将“错误”炼成武器。

——

战前一夜,林涛破天荒地主动来找他。

他站在叶无痕静室外,没有敲门,只是隔着门扉说:

“卫庄的剑法,其根基是未定义行为。”

叶无痕推开门。

“如何破?”

林涛沉默片刻。

“我查阅了绿水院千年级的剑谱残卷。”他说,“卫庄的剑招之所以能诱发天道混沌,是因为他刻意将代码写成违反C++标准但恰好被当前编译器接受的形态。”

“同一段代码,换一个编译器、换一个优化等级,行为可能截然不同。”

叶无痕看着他。

“你的意思是……”

“他的剑是假的。”林涛声音低沉,“他以特定编译器为锚,将未定义行为固化为‘伪定义’。”

他顿了顿。

“若能在对决中更换编译环境——也就是,脱离千鹤派的灵纹体系——他的剑招将自溃。”

叶无痕沉默良久。

然后他说:

“你为何告诉我这些?”

林涛没有回答。

他只是从袖中取出一枚寸许长的玉令,放在叶无痕掌心。

玉令上刻着四个字:

玄冰·凌霜。

——

那一夜,叶无痕没有入睡。

他将那枚玉令握在掌心,以神识探入。

玉令中封存着一道他从没见过的新语法——C++17的特性。

凌霜写道:

“若需脱离千鹤派灵纹体系,可临时启用玄冰院秘传的‘if with initializer’。此语法宗门尚未普及,卫庄的旧式编译器必不识之。”

下附一行灵纹:

cpp
if (auto it = map.find(key); it != map.end()) {
    // 此作用域内 it 有效,且为局部变量
}

——if语句内嵌初始化。

叶无痕读了三遍。

这是他在继承、虚函数、typeid之外,第一次接触C++现代语法。

——

次日巳时,演武台。

卫庄执剑而立,周身萦绕着淡淡的混沌灵光。他的剑没有开刃,剑身上布满细密的裂纹——那是千锤百炼的未定义行为留下的道痕。

叶无痕持沧澜古剑,剑尖垂地。

卫庄没有多言。他起手便是成名绝技——数组越界·断空斩。

他的剑尖刺向虚空坐标[-1]。

——那是任何标准C++程序都不应访问的内存位置。

千鹤派灵纹体系拦截了这一击,但代价是:天道判定叶无痕的神识访问越界,他的护体灵光骤然暗淡三分。

卫庄的第二剑接踵而至:空指针·噬魂。

他的剑尖指向nullptr,却强行解引用。

——又是未定义行为。

叶无痕的护体灵光再暗三分。

照此下去,不出十剑,他的神识屏障将彻底崩碎。

——

卫庄的第三剑刺至半途时,叶无痕忽然抬指。

他在虚空中刻下一道灵纹:

cpp
if (auto* p = dynamic_cast<FuLingLang*>(yaoShou); p != nullptr) {
    // 腐灵狼专用反制
}

if with initializer。

这道灵纹在卫庄的旧式编译器视角中——不存在。

它没有被编译,没有被执行,甚至没有被识别为语法错误。

它只是被忽略了。

叶无痕等的就是这一瞬。

他以这道被忽略的灵纹为锚,将自己的神识从千鹤派灵纹体系中剥离出来。

卫庄的剑招依然在千鹤派灵纹体系内运转,但叶无痕已不在那个体系之中。

他换了编译器。

——

卫庄的第四剑刺空。

他赖以成名的未定义行为剑法,第一次失去了目标。

因为叶无痕此刻的神识运行逻辑,与他剑招依赖的未定义行为不在同一套天道契约下。

卫庄愣了一息。

就这一息,叶无痕的反击已至。

他不是剑修,没有华丽的剑招。

他只是将沧澜古剑平平刺出——剑尖所指,是卫庄剑身上的第一道裂纹。

那裂纹的成因:多年前某次编译器升级,卫庄依赖的未定义行为被重新定义为明确错误,他的剑从此有了无法修复的暗伤。

叶无痕的剑尖触及那道裂纹。

卫庄的剑,从中断折。

——

元婴期·第十五章 完


第四十章 道统之争·何为继承

叶无痕胜卫庄的消息,半日之内传遍千鹤派。

青山院弟子奔走相告,绿水院噤若寒蝉。连林元青都在正殿中对众长老说了一句:

“元婴大比八强,青山院占其二。”

——其二,指的是叶无痕与林涛。

林涛在首轮以剑修类之锐,险胜玄冰院一位金丹巅峰。这是他入门七年来,第一次在宗门大比中进入复赛。

他没有来找叶无痕庆贺,也没有接受任何同门的祝贺。

他只是将自己关在静室中,反复调试他那个剑修类的友元声明。

——

复赛抽签结果公布那夜,叶无痕正在补全虚表第十九道。

凌霜推门而入。

她神情少有的凝重。

“你下一轮的对手,是绿水院掌尊·尹曾琪。”

叶无痕停笔。

尹曾琪——元婴巅峰,千鹤派三大掌尊之一,林元青的老对手。他曾在《JavaScript百炼成仙》的历史中,以外门小比考官的身份嘲讽过林元青。

此刻,他成了叶无痕的对手。

“元婴大比,掌尊也可下场?”叶无痕问。

“此例已开三百年。”凌霜道,“尹曾琪主动请战,理由冠冕堂皇——验一验沧澜剑传人的成色。”

她顿了顿。

“实际理由,你我皆知。”

叶无痕沉默。

绿水院百年来以重载狂剑与异常流剑法为尊,讲究的是对语言特性的极致压榨、对编译器行为的极限试探。

而叶沧澜一脉的道统,是继承、多态、标准规范。

这是两条路。

——也是千年前三宗决裂的根源。

——

叶无痕没有问尹曾琪的弱点。

他只是在玉简中写下尹曾琪成名以来所有公开对决的记录,逐行分析他的重载选择模式、异常抛出时机、编译器版本偏好。

凌霜坐在一旁,偶尔指出一两处玄冰院情报档案中的细节。

林涛不知何时也来了。

他站在门边阴影里,没有进来,只是沉默地听着。

叶无痕写满三枚玉简时,窗外天色已白。

他抬起头。

“我大概知道尹掌尊的虚函数表布局了。”

林涛在门边低声道:

“……小心。”

然后他转身离去。

——

元婴期·第十六章 完


第四十一章 虚表对决·尹曾琪

元婴大比第四日,演武台。

这是千鹤派主峰最大的演武场,可容三千人观礼。今日座无虚席——三院弟子、外宗访客、甚至几位久不露面的太上长老,都出现在观礼席上。

台上只有两人。

叶无痕持沧澜古剑,剑尖垂地。

尹曾琪负手而立,周身没有任何法器。

他望着叶无痕眉心的元婴裂痕,缓缓开口:

“你继承叶沧澜虚表十九道,便以为自己通晓多态了?”

叶无痕没有答话。

尹曾琪续道:“多态的本质,是晚绑定。但C++的多态,绑定再晚,也是在单继承的线性虚表中索引。你的虚函数表,不过是十九个函数指针的数组。”

他抬起手,五指间有五色灵光流转。

“你可知,重载的本质是什么?”

叶无痕答:“早绑定。编译期确定。”

“不错。”尹曾琪道,“多态是父类指针指向子类,虚表索引;重载是同一函数名、不同形参,编译器依实参类型择其一。”

他顿了顿。

“多态应对对象族系,重载应对操作族系。”

“多态是纵向的,重载是横向的。”

“你继承叶沧澜的道统,只学了纵向,未学横向。”

他抬手。

五道灵光在他掌心凝成五柄虚剑,剑身色泽各异——那是五种不同类型的重载:

cpp
void slash(int);        // 单体斩
void slash(float);      // 扇形斩
void slash(double);     // 范围斩
void slash(string);     // 咒法斩
void slash(XiuZhe*);    // 修士斩

五剑齐发。

这不是虚函数调用,不依赖任何虚表。

这是编译期根据叶无痕的防御类型,自动选择对应的剑招。

——

叶无痕第一次面对这样的攻势。

他的虚函数表在此刻毫无用处——因为尹曾琪的剑招根本不进虚表。

他必须在千分之一息内,让自己的“类型”适应尹曾琪的五种斩法。

他想起凌霜借他的C++17玉令。

他写:

cpp
auto&防御 = 叶无痕.当前护体灵气();

auto——类型推导。

让编译器替他决定此刻防御的类型。

五柄虚剑斩至他身前三尺时,编译器完成了对防御的类型推导:

它是整型、浮点、双精度、字符串、修士指针五种类型的联合体**。

——没有一种重载能够精确匹配。

尹曾琪的五剑,在防御面前同时失去了明确的靶标。

它们在空中顿了一瞬。

就这一瞬,叶无痕的反击已至。

他不是以剑反击。

他是以虚表反击。

他将沧澜古剑刺入地面,以剑为媒,将自己神识中的虚函数表投影到演武台的灵纹阵法上。

那虚表不是十九道。

是他今夜新写的第二十道:

cpp
virtual void 应对重载(YinZengQi*) = 0;

他没有实现这道纯虚函数。

他只是把它展示给尹曾琪看。

——

尹曾琪望着那道纯虚声明,忽然笑了。

“你这是……向我求教?”

叶无痕答:

“重载是多法对一型,虚函是一法对多型。”

“弟子愚钝,不知二者如何归一。”

“故请掌尊——覆盖此虚法。”

——

演武台上一片寂静。

三千修士都看懂了。

叶无痕没有以剑法对抗剑法,没有以虚表对抗重载。

他是在邀请尹曾琪:你既然认为重载优于多态,请你自己写一个子类,覆盖我的纯虚函数,证明你的道统更优。

尹曾琪沉默了很久。

然后他散去掌中五剑。

“你赢了。”他说。

他没有解释为什么。

他只是转身,走下了演武台。

——

元婴期·第十七章 完


第四十二章 道统一脉·青山绿水

尹曾琪认输的那一刻,林元青起身离席。

他没有去演武台,而是直接去了绿水院。

——

绿水院正殿,尹曾琪独坐于上首。

林元青推门而入。

两位掌尊对视。

三百年前,他们是同门师兄弟,共修重载术法。后来千鹤派内部分化,林元青转入青山院继承叶沧澜道统,尹曾琪留在绿水院开创重载狂剑一脉。

三百年间,两人在宗门会议上针锋相对,从无一句私下交谈。

此刻,殿中只有他们二人。

林元青开口:

“你方才认输,不是因为他那道纯虚函数。”

尹曾琪没有否认。

“他写virtual void 应对重载(YinZengQi*) = 0时,”林元青说,“你看见的不是他的虚表。”

“是他的道心。”

尹曾琪沉默良久。

“三百年前,”他声音沙哑,“你我同读《叶沧澜手札》最后一章。”

“手札中写:‘重载与多态,非对立,乃互补。’”

“我问你:何为互补?”

“你答不出。我也答不出。”

林元青没有说话。

尹曾琪续道:

“后来你我分道扬镳。你钻研多态,我深耕重载。”

“三百年,谁也不曾向对方迈出一步。”

他顿了顿。

“方才那孩子写virtual void 应对重载(YinZengQi*) = 0——”

“他在替我留一扇门。”

林元青望着他。

尹曾琪闭上眼。

“他比我像你。”

——

林元青离开绿水院时,天已黄昏。

他站在两院之间的山道上,望着落日。

他想:三百年了。

他与尹曾琪各自走了一条路,都以为自己选对了。

直到一个入门未满一年的后辈,用一行纯虚函数,把两条路画在了一起。

——

元婴期·第十八章 完


第四十三章 元婴圆满·异派协约

元婴大比落幕那日,叶无痕被召至主峰大殿。

殿中只有三人。

太上大长老、林元青、墨渊长老。

太上大长老坐在上首,面前的玉璧上,那道残缺千年的虚析构函数,已被叶无痕补全。

老人望着那行完整的代码,许久不语。

然后他取出一枚寸许长的晶令。

晶令通体透明,内里封存着无数细密灵纹——那是千年前三宗七派共同签署的《异派标准》全文。

“此令本应在千年前,由叶沧澜传给他选定的继承人。”老人道。

“然他散功太急,未及传令便兵解而去。”

他看向叶无痕。

“今日,此令归你。”

——

叶无痕双手接过晶令。

他以神识探入。

《异派标准》开篇,是叶沧澜亲笔写下的序言:

“脚本大陆诸宗,功法各异,灵根有别,法器不同。然妖兽潮至,万剑齐发之时,可否不分宗派、不问灵根,共御外敌?”

“可。”

“只需三宗七派皆认同同一套运行时类型识别规则。”

“皆认同同一种虚表布局。”

“皆认同同一个继承权限体系。”

“此谓异派标准。”

“C++之伟大,不在其能描述万物。”

“在其能让不同的人,用不同的方式,描述同一个万物。”

——

叶无痕读完整部《异派标准》。

他抬起头,望向太上大长老。

“前辈,叶沧澜剑尊写这部标准时——他心中想的是什么?”

老人沉默良久。

“他想的,不是千鹤派一宗之兴衰。”

“他想的,是脚本大陆三千年、三万年。”

“他想的,是他死后千百年,仍有修士能在不同的宗门、不同的灵根、不同的编译器下,写出一段能协同运转的代码。”

他顿了顿。

“他想的,是传承。”

——

叶无痕低下头。

他将那枚晶令收入怀中,与枯黄古戒并列。

然后他开口,声音很轻:

“弟子有一事禀告。”

“弟子筑基渡劫时,曾将毕生所学尽数忘尽。”

“唯余一念。”

太上大长老看着他。

“那一念,是什么?”

叶无痕答:

“何为道。”

殿中寂静。

玉璧上那道补全的虚析构函数,仿佛微微一亮。

——

元婴期·第十九章 完


第四十四章 下山前夕·再访竹庐

元婴大比后第七日,叶无痕独自登上主峰。

他推开那扇竹扉,老人仍坐在玉璧前,背影如千年来一般枯寂。

“晚辈有一事请教。”叶无痕道。

“说。”

“叶沧澜剑尊散功兵解前,曾说:‘待有后人继承虚表十九道,剑自认主。’”

“晚辈已得剑。”

“然晚辈始终不解——他为何要设此考验?”

老人沉默了很久。

然后他缓缓开口:

“你以为,他设那十九道虚函数,是考校后人对继承与多态的掌握?”

叶无痕没有答。

老人续道:

“你继承虚表十九道,用了多久?”

“七日夜。”

“你补全玉璧上那道纯虚析构,用了多久?”

“……一息。”

老人转过头。

浑浊的目光中,有一丝极淡的笑意。

“他在落叶之森设四十九座阵基,刻十九道虚法,费时三年。”

“他明知纯虚析构必须在类外定义,却故意只写virtual ~,任其残缺千年。”

“他不是在考验你的技术。”

“他是在等一个愿意替他补全的人。”

——

叶无痕怔住。

老人收回目光,复望向玉璧。

“他一生追求完美。”

“晚年方知,有些事,独力难成。”

“需要后人。”

——

叶无痕在竹庐中站了很久。

离开前,他轻声问:

“前辈可有话,要晚辈带给叶沧澜剑尊?”

老人没有回答。

他仍望着那道玉璧,仿佛一尊千年的石像。

叶无痕躬身一礼,退至门边。

他推门时,听到身后传来极轻、极轻的三个字:

“……不必了。”

——

元婴期·第二十章 完


第四十五章 元婴破体·化神之始

叶无痕回到青山院时,已是深夜。

他在静室中独坐,将那柄沧澜古剑横于膝前。

剑身漆黑,无锋无刃。

他忽然想起自己第一次握剑时的疑惑:这剑,如何杀敌?

此刻他终于明白。

这剑不是用来杀敌的。

是用来刻符的。

——

他将剑尖抵于地面,以剑为笔,在静室青石板上刻下第一道灵纹:

cpp
class CppXianRen {
public:
    virtual void daoTong() = 0;
    virtual ~CppXianRen() = 0;
};

CppXianRen::~CppXianRen() {}

这是叶老未完的道统。

他刻下第二道:

cpp
class YeWuHen : public CppXianRen {
public:
    void daoTong() override {
        cout << "元婴修士继承道统:虚表十九法、异派协约" << endl;
    }
};

这是他自己的继承。

他刻下第三道、第四道……

他将元婴期以来所学——继承、虚函数、多态、纯虚、抽象、RTTI、dynamic_cast、typeid——一一刻入石板。

灵纹如河,从剑尖奔涌而出。

他刻到最后一道时,窗外天色已白。

他搁剑,低头望着满室灵纹。

那些纹路从四面八方汇聚而来,在他丹田之处交织、缠绕、升腾——

他体内的元婴睁开眼。

那不是他的元婴。

那是一道他从未见过、却又无比熟悉的身影。

青衣、古剑、枯黄玉佩。

叶沧澜。

——

青衣剑尊的虚影在他丹田中凝成一瞬,与他自己的元婴对视。

然后他开口,声音隔着千年时光,沙哑而温和:

“你写完了。”

叶无痕说不出话。

剑尊的虚影微微颔首。

“吾道不孤。”

语毕,虚影散作漫天灵光,尽数融入叶无痕的元婴之中。

元婴通体大亮,裂痕——不是修复,是彻底碎开。

碎片化作万千光点,从叶无痕的丹田逸出,盘旋而上,透过皮肉、透过骨骼、透过静室的屋顶,散入千鹤派主峰的晨曦。

元婴破体。

化神。

——

叶无痕睁开眼。

膝上沧澜古剑,剑身第一次映出人影。

那是他自己的脸。

——

元婴期·完

【本卷约4.8万字】

累计总字数:约18.3万字


卷末语

元婴一卷,叶无痕跨越了C++修仙途中最为深邃的领域——继承与多态。

他学会了以继承明本源、知演化;以虚函数行多态、应万变;以纯虚立道统、待后人;以RTTI辨真身、协异派。

他在落叶之森继承了叶老千年前的虚表十九道,在玉璧前补全了那道残缺的纯虚析构,在元婴大比中以一道纯虚声明,让三百年分立的道统遥望一眼。

他破丹成婴,元婴破体,化神而出。

叶沧澜的虚影在他丹田中停留一瞬,说了三句话。

“你写完了。”

“吾道不孤。”

而后散尽。

——

前方尚有化神卷、大乘卷、飞升卷。

模板、STL、智能指针、移动语义、并发、C++20……

以及那部叶沧澜未竟的、以C++写成的——《异派标准》。


📘 附:第四卷已出场C++知识点一览

章节 知识点 修仙比喻 廿六 继承(public)、派生类 子承父业、复开新途 廿六 父类指针指向子类对象 执父之钥,开子之门 廿七 继承权限(public/protected/private) 嫡传/内门/私淑 廿八 子类构造函数与父类构造的调用 父先立,子方成器 廿八 初始化列表显式调用父类构造 先祭宗祠,后启新府 廿九 虚函数(virtual) 剑同法异 廿九 override(C++11) 覆盖父法、郑重致敬 廿九 多态 一父执万法,子各不同 三十 虚函数表(vtbl)、虚表指针(vptr) 类之符籍、对象之首 三十 多态的运行时开销 内存加一指,调用多一程 三十 开闭原则 对扩展开放,对修改封闭 卅一 纯虚函数(=0) 留法门以待后人 卅一 抽象类 仙人图谱,不可实例 卅一 纯虚析构函数 仙人已逝,道统犹存 卅一 纯虚析构的类外定义 后人之责 卅二 dynamic_cast 安全向下转型 卅二 运行时类型识别(RTTI) 知其实,然后法通 卅六 typeid、type_info 查类之名 卅六 typeid(x).name() 真名现世 卅九 if with initializer(C++17) 内嵌初始化、局部生效 四十 auto类型推导 让天择型 四一 重载与多态对比 横向纵向、早绑晚绑 四三 异派标准 三宗七派共遵之协约 四五 元婴破体、化神 术尽化、道初成


第五卷预告:化神返虚·模板与STL

化神期的叶无痕,将面对C++修仙世界最为浩瀚的领域——泛型编程。

藏经阁五层,墨渊长老将授他《模板天书》残卷。

函数模板、类模板、模板特化、模板元编程……

以及那座以模板铸就的、千年前便已存在的上古神器库——标准模板库(STL)。

而叶沧澜散功前留下的最后一句话,将在这一卷揭开谜底:

“异派标准……我藏在vector里。”


【待续】


写作说明: 第四卷正文已完成,约4.8万字。至此全书累计约18.3万字。

第五卷(化神返虚·模板与STL)计划约4万字,第六卷(大乘飞升·现代C++与并发)约2.5万字,第七卷(混沌飞升·叶老前传终章)约1.5万字,总计可控制在20-22万字。

若您认可此节奏,我可继续展开第五卷。