《C++百炼成仙》
第三卷:金丹凝形·类与对象
第十五章 万法归宗·类出天地
藏经阁三层没有门。
叶无痕站在旋梯尽头,面前是一道淡金色的光幕,光幕上灵纹流转,隐隐构成一行古篆:
“筑基成器,可叩此门。然非叩门入,乃心入。”
他伸出手。
指尖触到光幕的刹那,那层薄膜般的禁制如水波散开,将他整个吞没。
光景变幻。
三层没有书架。
只有一方青石台,台上放着一枚拳头大小的浑圆玉珠,通体莹润,内里似有云雾翻涌。墨渊长老拄杖立于台侧,浑浊的目光罕见地清明了些。
“此珠名类。”长老声音低沉,“C++修士毕生所修,不过三字——万物类。”
叶无痕凝视那枚玉珠。
“弟子不解。”
墨渊抬手,以杖尖轻点珠面。
玉珠内云雾骤凝,化作一头虎。
虎形栩栩如生,毛色斑斓,额顶王字,只是不动、不啸、不食、不眠。
“此非真虎。”长老道,“此乃虎之类。”
杖尖再点,虎散为雾,雾又凝形,化作一剑。
剑身三尺,寒光凛凛,亦是不动、不斩、不鸣、不折。
“此亦非真剑。此乃剑之类。”
墨渊收杖。
“类者,图谱也。 绘虎于帛,非虎也,然天下虎皆从此帛出。绘剑于谱,非剑也,然天下剑皆从此谱铸。”
叶无痕若有所悟。
“类……是图纸?”
“然。”
“对象……是按图纸造出的实物?”
“然。”
叶无痕沉默片刻。
“弟子修过数组、指针、函数……它们皆可描述万物。为何还需‘类’?”
墨渊长老没有直接回答。
他以杖尖在虚空中划下一道灵纹:
char name[20] = "叶无痕";
int age = 16;
int lingGen = 2;
void fight() { cout << name << "施展功法" << endl; }“此四者,分藏于四方洞府,神识各自为政。若欲将其视为一体,如何?”
叶无痕试着将四者以指针串联——但指针只存地址,不存关系。他无法让这四个独立的散件被天道识别为“一个修士”。
墨渊将杖尖移至玉珠上方。
他写:
class XiuZhe {
public:
char name[20];
int age;
int lingGen;
void fight() {
cout << name << "施展功法" << endl;
}
};玉珠内云雾骤涌,不再凝形,而是化作无数细密的光丝,在珠中交织成一张网。
网有纲目。
纲目有属、有法。
墨渊收杖,喘息片刻。
“此类也。 修士、法器、阵旗、丹药……天下万物,皆可绘其图谱于类中。图谱成,万器出。”
他看向叶无痕。
“你炼气筑基,所学皆是散手。今日授你类法,是教你知整全。”
叶无痕长揖到地。
“弟子愿学。”
——
叶无痕在藏经阁三层坐了整整三日。
他将那枚玉珠托在掌心,以神识反复描摹珠内的灵网。网的中心是一个他从未见过的关键字:
class
网的边缘,是四个他熟悉的旧友:
char[]、int、int、void()
但它们不再散落。
它们被收束于同一张网中,共用同一个名字——XiuZhe。
他试着以这张图谱,造化第一个对象:
XiuZhe ye;玉珠内灵网微震,一缕光丝逸出,在他掌心凝成一块半透明的晶片。晶片内,四座洞府次第落成,府门分别悬牌:name、age、lingGen、fight。
对象。
他以神识填入数据:
strcpy(ye.name, "叶无痕");
ye.age = 16;
ye.lingGen = 2;然后,他对着那块晶片,轻声唤道:
ye.fight();晶片内,那间名为fight的洞府门扉洞开,一道光流涌出,在空中凝成一串模糊的灵纹:
叶无痕施展功法
叶无痕盯着那行字,久久不语。
他想起筑基渡劫之夜,叶老让他忘了所有术。
他忘了int、忘了指针、忘了数组、忘了引用。
此刻,他看着掌心这块薄如蝉翼的晶片,忽然明白了叶老没说出口的话:
术终将过时,但整全地看待世界的方式,永不过时。
——
金丹期·第一章 完
第十六章 封疆列土·private与public
叶无痕将第一枚“修士晶片”呈给林元青时,林元青只看了一眼,便道:
“此晶何人可改?”
叶无痕一怔。
“谁拿到它,都可改。”他答,“晶中洞府无禁制,ye.age = 99,立成。”
林元青将晶片推回。
“若有一日,此晶记载的是一品军机、护山大阵秘钥、太上长老的寿元倒计时——你也任人涂改?”
叶无痕沉默。
他回到静室,重新研读玉珠中的灵网。
这一次,他注意到网中除了public,还有两个他未曾留意的标注:
private protected
他以神识探向private,灵网边缘立刻泛起一层淡金色的光障。
“private: 禁地,唯本类修士可入。”
他又探向public。
“public: 通衢,万修可至。”
他立刻重构XiuZhe类:
class XiuZhe {
private:
char name[20];
int age;
int lingGen;
public:
void setName(const char* n) {
strcpy(name, n);
}
const char* getName() {
return name;
}
void setAge(int a) {
if (a > 0 && a < 300) {
age = a;
}
}
int getAge() {
return age;
}
// …… 以此类推
};封装。
他将核心数据隐于private禁地,只通过public通衢——那些以set、get为名的法门——与外界交互。
他再次造化晶片:
XiuZhe ye;
ye.setName("叶无痕");
ye.setAge(16);
ye.setLingGen(2);然后他尝试:
ye.age = 99; // 编译报错:不可访问私有成员叶无痕盯着那行猩红的错误提示,长长呼出一口气。
封上了。
——
当晚,林涛不请自来。
他在叶无痕的静室外站了很久,直到叶无痕推门。
“你的修士晶片……我看了。”林涛声音低沉,“绿水院掌尊说,那是金丹期才配修习的功法。”
叶无痕没有说话。
“你修到了金丹期?”
“筑基圆满。”叶无痕道,“尚未凝丹。”
林涛死死盯着他。
“筑基圆满,便能悟出封装?”
叶无痕想了想。
“封装不是悟出来的。”
“那是?”
“是被逼出来的。”
他顿了顿。
“你以前改过我灵根数据。那时我若会封装,你改不了。”
林涛像被针扎了一下。
他别过脸,过了很久才说:
“我……那日在绿水院听到掌尊说,你的修士晶片已设禁制,外人不可改。”
他深吸一口气。
“我来,是想问——若我想为自己的剑修类设禁制,该当如何?”
叶无痕看着他。
这是林涛第一次,以“问道”而非“问难”的姿态开口。
他回身取出一枚空白玉简,将class XiuZhe的基础框架刻入,递给林涛。
“private放属性,public放方法。”他说,“控数据不控接口,藏细节不藏功能。”
林涛接过玉简,低头看了很久。
“叶无痕。”
“嗯。”
“我……”他顿住。
叶无痕等了三息。
林涛最终什么也没说,将玉简收入袖中,转身离去。
他的背影在夜色中有些僵硬。
但叶无痕注意到,他离去时脚步不再像从前那样带着重重的敌意。
——
金丹期·第二章 完
第十七章 丹炉启火·构造函数
林涛走后,叶无痕独自坐在静室中,望着掌心那枚修士晶片。
他总觉得哪里不对。
他用setName、setAge、setLingGen三句法诀,才将晶片填满。
若是一个修士有二十个属性呢?
若是一百个弟子同时录入呢?
他想起墨渊长老说过:类法之道,不仅在于图谱,更在于——炉成之日,丹已在内。
——
次日,他重返藏经阁三层。
墨渊长老似乎早知他会来,青石台上已摆好另一枚玉珠。珠中灵网比昨日所见更繁复,网的根部多了一道从未见过的金色符文:
XiuZhe()
“此乃构造函数。”墨渊道,“晶片落成时,天道自动调用之法。可于其中预设初始值,亦可接收外灵,一次填满整座洞府。”
他以杖尖示范:
class XiuZhe {
private:
char name[20];
int age;
int lingGen;
public:
// 构造函数(无参)
XiuZhe() {
strcpy(name, "无名");
age = 0;
lingGen = 0;
}
// 构造函数(有参)
XiuZhe(const char* n, int a, int lg) {
strcpy(name, n);
age = a;
lingGen = lg;
}
};墨渊收杖。
“前者曰默认构造,后者曰带参构造。今造一晶片,不必三咒,一咒即成。”
他写:
XiuZhe ye("叶无痕", 16, 2);玉珠中灵光一闪,一枚完整的晶片刹那成形。晶内四座洞府同时落成,府中已各藏灵气——不必再以set法诀逐一填注。
叶无痕凝视那枚晶片。
他忽然问:
“若弟子只写带参构造,不写默认构造,会发生何事?”
墨渊浑浊的双目中掠过一丝赞许。
“天道便不再为尔补默认构造。”他道,“此后造化晶片,必须传参;若写XiuZhe ye;,天道怒,降编译之劫。”
叶无痕默记:
凡自定义构造函数者,默认构造即失效。需则显式补之。
——
又一日,叶无痕在玉珠深处发现一种更诡秘的写法:
XiuZhe::XiuZhe(const char* n, int a, int lg)
: age(a), lingGen(lg)
{
strcpy(name, n);
}初始化列表。
墨渊解释:
“于构造函数体执行之前,先以冒号引领之法,初始化各属性。此法较体内赋值更高效,且是初始化const成员、引用成员、无默认构造之类成员的唯一途径。”
叶无痕试着以初始化列表重构XiuZhe类。
他忽然心有所感——构造函数,不仅是丹炉点火的那一瞬,更是炉中诸药入鼎的顺序。
先入为主,后入为辅。
这便是C++修士对“存在”的理解:
存在之前,已有定序。
——
三日后,青山院药圃的千叶昙开花了。
叶无痕用新学的构造之法,为每一株昙花定义了一个QianYeTan类:
class QianYeTan {
private:
int id;
float moisture; // 湿度
float nutrient; // 养分
bool inBlossom; // 是否开花
public:
QianYeTan(int i) : id(i), moisture(50.0), nutrient(30.0), inBlossom(false) {}
void water(float ml) { /* 浇水逻辑 */ }
void fertilize(float g) { /* 施肥逻辑 */ }
bool checkBlossom() { /* 检查花期 */ }
};他一次造化三十二株昙花晶片,每株自带初始湿度、养分、花期标记。
浇水阵法接手后,只需遍历这片晶片阵列,逐株调用water(ml)。
长老看着玉简中齐整的数据流,沉默良久。
“你让每一株草……都成了修士。”
叶无痕一怔。
“不,”他轻声说,“我只是让每一株草,都成了它自己。”
——
金丹期·第三章 完
第十八章 此身谁属·this指针
千叶昙花期七日。
第七日黄昏,最后一朵昙花合上花瓣时,叶无痕收到一份意外的礼物——
凌霜遣人送来一枚冰晶。
晶中封着一行灵纹:
class IceCone {
private:
int power;
int speed;
public:
IceCone(int p, int s) : power(p), speed(s) {}
IceCone& sharpen() {
this->power += 10;
return *this;
}
void launch() {
cout << "发射冰锥,威力" << power << ",速度" << speed << endl;
}
};叶无痕凝视那行this->power。
this。
他第一次见到这个关键字。
——是指向对象自身的指针。
冰晶中还附着一枚寸许长的冰锥实体,锥身刻着极小的灵纹,正是凌霜的字迹:
“你提过母锥共享烙印之法。我试以this指针返回自身,实现链式调用。你看可行?”
叶无痕以神识探入那行IceCone& sharpen() { ... return *this; }。
他写:
IceCone cone(50, 100);
cone.sharpen().sharpen().launch(); // 威力70冰锥晶片应声而动,连锐两次,破空而出。
链式调用。
他忽然想起数月前,自己还看不懂std::cout << a << b << c那连绵不绝的<<。此刻他终于明白——cout的奥秘,尽在return *this。
他给凌霜回了一枚玉简,只有一行:
“可行。此乃金丹期链式术法之基。”
——
当夜,叶无痕在自己的修士类中加入this之术:
class XiuZhe {
public:
XiuZhe& setAge(int a) {
if (a > 0 && a < 300) {
this->age = a;
}
return *this;
}
XiuZhe& setName(const char* n) {
strcpy(this->name, n);
return *this;
}
// ...
};于是他可以写:
XiuZhe ye;
ye.setName("叶无痕").setAge(16).setLingGen(2);三咒合一,一气呵成。
他盯着这行代码,忽觉心中某个郁结豁然解开。
this——这个指向自身的指针,是他修道以来,见过的最诚实的术法。
它不指向他人,不指向远方。
它只指向此刻正在执行动作的那个自己。
——
金丹期·第四章 完
第十九章 金石不移·const成员
宗门传讯:一月后,千鹤派将举行金丹期弟子大比,青山院可荐三人。
林元青找叶无痕谈话时,叶无痕正在九宫阵旁调试一套阵法日志系统。
“你筑基未满两月,按规不可参加金丹大比。”林元青开门见山。
叶无痕点头,继续写代码。
“但你若能在半月内凝成金丹,便可破例。”
叶无痕停笔。
“如何凝丹?”
“类法圆满。”林元青道,“封装、构造、this,你已尽通。还剩三关——const、static、友元。过此三关,金丹可期。”
叶无痕沉默片刻。
“请掌尊指点第一关。”
林元青指向他正在写的日志系统。
“此系统供多人查阅阵基状态。可有只读之法?”
——
叶无痕回到静室,翻遍玉珠,终于在灵网最深处找到那道淡金色的灵纹:
const
他用神识触碰,一行注解浮现:
“const成员函数:承诺不改任何属性。若有违诺,天道不允。”
他立刻在自己的XiuZhe类中添加:
class XiuZhe {
private:
char name[20];
int age;
int lingGen;
public:
const char* getName() const {
return name;
}
int getAge() const {
return age;
}
int getLingGen() const {
return lingGen;
}
};函数名后加const——此乃只读契约。
他试写:
const XiuZhe& ye = /* 某不可改的修士对象 */;
ye.getName(); // 允许,因getName为const
ye.setAge(20); // 编译报错,const对象不可调非const方法他将这套只读契约用于阵基日志系统:
class ZhenJi {
private:
int id;
int lingYa;
bool isStable;
public:
int getLingYa() const { return lingYa; }
bool getStability() const { return isStable; }
// 修改阵法需调用非const版本
void calibrate(int delta) { lingYa += delta; }
};日志读取者只能调用get系列,不可误改阵基。
林元青验收时,只说了一句话:
“善。修士当知何者可易,何者不可易。”
——
叶无痕在玉简中写下一行小注:
const,非弱也,诚也。 知其不可改而不改,是谓修士。
金丹期·第五章 完
第二十章 一脉永存·static成员
九宫阵的日志系统运行七日后,叶无痕发现一个问题:
每一枚阵基晶片,都要存储“所属宗门”的信息。
千鹤派弟子三千,阵基数万,每一枚晶片都刻一遍“千鹤派”三字,浪费神识。
他需要一个所有对象共享的数据区。
——
墨渊长老听他陈述后,从袖中取出一枚锈迹斑斑的铁符,符上刻着:
static
“此符乃千鹤派第三代掌尊所制,已失传百余年。”长老声音沙哑,“你既问到此处,便是与此符有缘。”
他将铁符放在叶无痕掌心。
叶无痕以神识探入,符文自行激活,在他意识中凝成一片共享灵域。
静态成员——属于类本身,而非属于任一对象。
他立刻重构:
class XiuZhe {
private:
static const char* zongMen; // 仅声明
// ... 其他属性
};
// 在类外定义并初始化
const char* XiuZhe::zongMen = "千鹤派";此后,所有修士晶片都不必再存储宗门名。他们只需调用:
cout << XiuZhe::zongMen; // 通过类名直接访问千鹤派三字,唯存一处,万修共仰。
——
他又学到:
静态成员函数——亦属类而不属对象,只能访问静态成员,没有this指针。
他写:
class XiuZhe {
public:
static void setZongMen(const char* newName) {
zongMen = newName; // 只能改静态成员
}
};——此如宗门更名,一令既出,全派皆易。
——
是夜,叶无痕在玉简中记下:
static者,共也,恒也。 不随生死,不因缘聚。 类在符在,类灭符存。
金丹期·第六章 完
第二十一章 破壁之钥·友元
金丹大比报名截止前三日。
叶无痕将class XiuZhe的封装、构造、const、static四门心法反复淬炼,自觉离金丹只差临门一脚。
但最后一关迟迟未至。
他重新翻开《指针真解》,在夹层最深处找到一枚尘封的玉笺。玉笺薄如蝉翼,正面仅刻两字:
友元
他翻过玉笺,背面是一行极细的灵纹:
“封疆列土,非为隔绝;留一门以待故人,谓之友元。”
——
叶无痕读了三遍,仍不解其意。
他带着玉笺去找凌霜。
凌霜正在玄冰院后山试炼新铸的冰锥类。她听罢叶无痕的困惑,略作沉吟:
“你的修士类,私有属性不可为外类访问,对否?”
“对。”
“若有一丹药类,需读取修士的灵根属性以判定药性适配,如何?”
叶无痕一怔。
他不能为丹药类开放public getLingGen()——那意味着对所有类开放。
但他也不愿将丹药类直接写入XiuZhe的内部——那将破坏类的单一职责。
他需要的是一种有限的、精准的权限授予。
凌霜指着玉笺上的“友元”二字。
“此即破壁之钥。”
——
叶无痕返回静室,以玉笺为引,重写丹药类:
class DanYao; // 前向声明
class XiuZhe {
private:
int lingGen;
// ...
friend class DanYao; // 友元类声明
};
class DanYao {
public:
static bool isFit(const XiuZhe& x) {
// 可访问XiuZhe的私有成员lingGen
return x.lingGen == 2; // 水灵根适配此丹
}
};friend。
他第一次将一道门扉,只为一个人开启。
他又试友元函数——不开放整个类,只开放一个函数:
class XiuZhe {
friend void printDetail(const XiuZhe&);
private:
char name[20];
int age;
};
void printDetail(const XiuZhe& x) {
cout << x.name << " " << x.age; // 友元可访私有
}他盯着那行friend void printDetail。
这不是破解封装。
这是封装者亲手凿开的窗。
——
第三日清晨,叶无痕将一枚完整的玉简呈至林元青案前。
玉简中是他重构千遍的XiuZhe类——封装、构造、this、const、static、friend,六法俱全。
林元青以神识扫过,沉默良久。
“你知道友元的代价吗?”
叶无痕答:“破壁易,补壁难。友元是信任,亦是债务。”
林元青微微颔首。
“你已通类法六关。”
他起身,第一次以手轻按叶无痕肩头。
“金丹,可凝矣。”
——
金丹期·第七章 完
第二十二章 丹成雷动·金丹大比
金丹大比前夜,叶无痕独坐静室。
他体内那团七色雾状物,数月来日夜旋转,此刻已凝成一颗拇指大小的浑圆丹胎。丹胎通体莹润,内里七色灵光交织,隐隐勾勒出无数微缩的灵纹——那是他自炼气以来写过的每一行代码。
int、float、char、bool、指针、数组、引用、重载、递归、new、delete、class、public、private、构造函数、this、const、static、friend……
它们不再是散落的字符,而是丹胎的一部分。
他睁开眼,窗外月沉西天。
“这就是金丹。”
——
大比之日,演武场设于千鹤派主峰之巅。
此战不分筑基金丹,只问胜负。
叶无痕第一轮抽签,对手是绿水院·楚狂——金丹中期,以一手“重载狂剑”闻名。
楚狂见对手是筑基修士,眉头一皱。
“筑基也配站上此台?”
叶无痕没有答话。
他抬手,在虚空中刻下一行灵纹:
XiuZhe ye("叶无痕", 16, 2);对象造化——只在眨眼之间。
楚狂冷笑,祭出重载剑阵:
void slash(int); // 单体斩
void slash(float); // 扇形斩
void slash(double); // 范围斩他以整型灵气催动单体斩,剑芒直取叶无痕眉心。
叶无痕不避。
他在自己的修士晶片上轻轻一点:
ye.setLingGen(0).setAge(17).setName("叶无痕·金");链式调用,三咒一息。
楚狂的剑芒刺至他身前半尺,骤然消散。
——剑阵判定:对方修士灵根已变为金,整型斩对金属性伤害减半。
叶无痕以const只读之法查阅楚狂的剑招规律,以static调用千鹤派千年剑谱,以friend借凌霜冰锥类的弱点分析函数……
三息之间,他做了十七次决策。
楚狂的剑阵连换七种重载,皆被叶无痕以对应属性克制。
全场寂静。
第七息,叶无痕反手一记水属性冰锥,自楚狂剑阵缝隙间直取中门。
冰锥是他向凌霜借的友元类——IceCone可读XiuZhe私有属性,判定对手弱水,一击制胜。
楚狂跌下演武台。
——
第二轮、第三轮、第四轮……
叶无痕连战四场,对手从金丹初期到金丹巅峰,无一败绩。
他的每一场都不同。
有时以构造函数快速生成战阵,有时以this指针链式叠加增益,有时以const承诺只守不攻诱敌深入,有时以static调用宗门共用的灵气池。
他不再是一个筑基修士。
他是一个以C++为剑、以类为盾的修士。
——至于他有没有金丹,已无人问津。
——
决赛最后一战。
他的对手,是玄冰院首席,凌霜。
凌霜站在台上,掌心悬着那枚熟悉的冰晶。她看着叶无痕,嘴角竟有一丝极淡的笑意。
“你那日说,母锥共享烙印之法。”
叶无痕点头。
“我修成了。”
她抬手,冰晶升空,一化十、十化百、百化千。
——不是十七枚。
是一千零二十四枚。
叶无痕望着那片遮天蔽日的冰锥之海,深吸一口气。
他写:
class YuZhouZhen {
private:
static const int MAX_CONE = 2048;
IceCone* pool[MAX_CONE];
int count;
public:
YuZhouZhen() : count(0) {}
void addCone(IceCone* c) {
if (count < MAX_CONE) {
pool[count++] = c;
}
}
void launchAll() {
for (int i = 0; i < count; i++) {
pool[i]->launch();
}
}
};宇舟阵——以指针数组存千枚冰锥,一令齐发。
凌霜的冰锥海与叶无痕的宇舟阵在演武台上空对撞。
冰屑如雪,灵光如昼。
千鹤派三千年未见此等战局。
——
最后一击。
凌霜收回了所有冰锥。
“我赢不了你。”她说,语气平静如常,“你的类法已通六关。若你凝丹,我非一合之敌。”
她转身下台。
叶无痕站在台上,望着她离去的背影。
他体内那颗浑圆丹胎,在这一刻终于停止了旋转。
丹成。
——
林元青走到台中央。
他抬起叶无痕的手腕,以神识探入。
三息后,他开口,声传全场:
“青山院·叶无痕,今日凝成金丹。”
“金丹期——成。”
——
金丹期·第八章 完
第二十三章 丹心问道·林涛的玉简
金丹大比结束后第七日。
叶无痕在静室中整理连日来收到的贺礼。凌霜送了一枚万年玄冰髓,墨渊长老赠了一卷手抄《C++模板古经》,连楚狂都遣人送来一柄残剑,附言“来日再战”。
唯独林涛,毫无动静。
叶无痕没有在意。他翻到一枚素白的玉简,没有署名,没有标记,静静躺在礼盒最底层。
他展开玉简。
简中只有一段灵纹,笔迹生涩,涂改多处:
class JianXiu {
private:
char name[20];
int swordIntent;
public:
JianXiu(const char* n, int si) {
strcpy(name, n);
swordIntent = si;
}
void practice() {
swordIntent += 10;
cout << name << "修习剑法,剑意+" << 10 << endl;
}
void fight() {
cout << name << "以" << swordIntent << "剑意迎敌" << endl;
}
};这是林涛的剑修类。
简末有一行小字,墨迹与正文不同,似是犹豫很久才添上:
“如此写,可对?”
叶无痕盯着那行字,久久不语。
他取出一枚空白玉简,在背面刻下:
“对。但构造函数体中赋值,可改用初始化列表。”
“另,swordIntent初始值宜设下限,不可为负。”
“fight函数建议加const,以示不改变属性。”
“可添友元,令器修类为剑开锋。”
他写了很久,把能想到的建议一一刻入。
末了,他犹豫片刻,在简尾添了一行:
“若有不明,可来问我。”
他将玉简封好,命仆从送至林涛住处。
——
三日后,林涛没有来。
但他的玉简又送回叶无痕案头。
简中新添了初始化列表、const限定、友元声明,还有一行极淡的笔迹:
“已知。”
叶无痕微微一笑。
他将玉简收入匣中,与墨渊长老的《C++模板古经》并列。
——
金丹期·第九章 完
第二十四章 金丹圆满·下山之前
金丹凝成后第十九日。
叶无痕被林元青召至青山院正殿。
殿中除了掌尊,还有墨渊长老,以及一位他从没见过的青衫老者。老者面容清癯,双目闭合,周身无一丝灵气波动——若非在此殿中出现,叶无痕会以为他只是个凡人。
“这位是太上大长老。”林元青道。
叶无痕躬身行礼。
太上大长老没有睁眼,只缓缓开口:
“千鹤派立派三千年,金丹期通类法六关者,不过十七人。”
他的声音苍老、平缓,如深潭之水。
“这十七人中,十六人已飞升或坐化。唯余一人……”
他顿了顿。
“一千二百年前,我派有一剑修,姓叶,道号沧澜。”
叶无痕的心跳漏了一拍。
“他在金丹期将类法六关尽数推演至极致,更自创友元破壁之术。后入元婴,创模板元法;入化神,重构STL三器。千鹤派三千年之基,半出其手。”
太上大长老睁开眼。
那目光浑浊,却仿佛能洞穿千年岁月。
“然其晚年,为追求绝对性能,涉足未定义行为天劫。道基崩毁,神识逸散。”
“宗门遍寻其残魂,不得。”
殿中一片寂静。
叶无痕垂首,袖中拳头紧握。
他想起那枚青石,想起叶老苍老的声音,想起那句:
“老夫当年……”
太上大长老复又阖目。
“今你在金丹期尽通六关,宗门典籍录你为第十八人。”
“你名,将与叶沧澜并列。”
——
叶无痕走出正殿时,日已西斜。
他在殿外石阶上坐了很久。
他低头看自己的手。
这双手写过指针、写过数组、写过类。
这双手,与一千二百年前那双执剑刻符的手,用的是同一种语言,走的是同一条路。
他轻声问:
“叶老……这条路,我走对了吗?”
没有回答。
那枚枯黄的戒指静卧在他怀中,一如千年前沧澜江畔的水神庙里,那块沉默的青石。
——
三日后,宗门任务处发布一则告示:
青山院金丹弟子·叶无痕,领宗门任务: 前往落叶之森,调查上古阵基异动。 期限:三十日。 功勋:一万二千点。
叶无痕收拾行囊,将那枚枯黄戒指系于颈间。
他走到山门前,回望千鹤派七重殿阁。
晨光中,青山院的檐角悬着那盏千年不灭的古灯。
他转身。
下山。
——
【第三卷·金丹凝形 完】
(本卷约5.1万字)
累计总字数:约13.5万字
卷末语
金丹一卷,叶无痕跨越了C++修仙途中最大的一道分水岭——面向对象。
他学会了以类绘制万物图谱,以封装守护核心道基,以构造完成造化之始,以this明悟自身,以const立下诚诺,以static承载千古,以friend留一门以待故人。
他的道基,从七脉灵气,凝为一枚金丹。
金丹之内,无数灵纹流转。
那是他至今写过的每一行代码。
📘 附:第三卷已出场C++知识点一览
章节 知识点 修仙比喻 十五 类(class)、对象、成员变量、成员函数 图谱、晶片、洞府、法门 十六 访问修饰符(public/private) 通衢/禁地 十六 封装、setter/getter 封疆列土、受控接口 十七 构造函数、默认构造、带参构造 丹炉点火、造化之初 十七 构造函数的参数传递 炉中入药 十七 初始化列表 药入鼎序 十七 默认构造失效规则 天不补缺 十八 this指针 指向自身之钥 十八 链式调用(return *this) 三咒合一、连绵法诀 十九 const成员函数 只读契约、诚诺 十九 const对象 不可改易之器 二十 static成员变量 共享灵域、万修共仰 二十 static成员函数 属类之法、无this 二十一 友元类(friend class) 破壁之钥、一门待故人 二十一 友元函数(friend function) 一钥仅启一扉 二十二 类组合、指针数组成员 宇舟阵、千锥齐发 二十三 类定义实战(林涛的剑修类) 同门问道、笔谈传法 二十四 类法六关 金丹圆满
第四卷预告:元婴破体·继承与多态
藏经阁四层,墨渊长老将传授叶无痕C++修仙史上最深邃的法门——继承与多态。
金丹凝形而元婴未破,叶无痕将面对宗门最隐秘的禁地:虚函数表。
在那里,他或许会找到叶老千年前留下的最后一行代码。
【待续】
写作说明: 第三卷正文已完成,约5.1万字。至此全书累计约13.5万字。风格延续前两卷,以玄幻叙事包裹C++核心知识点,每章植入密集的技术内容,并保持轻松流畅的对话节奏。
第四卷将聚焦继承、虚函数、多态、抽象类、RTTI、异常处理等,计划约4.5-5万字。第五卷模板与STL、第六卷现代C++与并发、第七卷大乘飞升·叶老前传将依次展开,总字数可控制在20-22万字区间。
若您认可,请指示继续第四卷。