夜晚,图书馆电脑室里。
"明天就上课了,好烦啊。"
我一脸幽怨。
曾经作为正教授的我,当然是不怕上课之类的…
只是,难得回到这个时间点,记忆在说着学校外面这边那边都是好吃的。
虽然已经不记得那些吃的具体的名字,但还记得好吃的东西很多很多。
各种海鲜、各种烧烤、各种冰淇淋、各种锅盔饼、各种自助…
都是学生价的美味。
好想去学校外面那些美食街逛逛啊…
虽然钱是个问题。
这样想着,我看了看自己的屏幕,那里是正在运行的matlab图形界面。
matlab是国内科研的常用软件,虽然作为语言设计得很破烂,但事实证明,它确实比较适合非程序员们快速地实现计算实验。
而写论文的人,如果不想自己碰代码,有时会把部分任务委托出去。而我迫于经济形势,无奈地放低姿态,去接了一份这样的代码实现的任务。
"学姐为啥会烦?"
"想到学校外面玩,想吃东西。"
听到我的发言,尧惘宣犹豫了一下,说:
"下周我陪你出去。"
"淦,尧惘宣你能不能多从字面意思出发啊?"
"哦。"
尧惘宣满不在乎地回应一声,看都不看我。
我狠狠地瞥了他一眼,关闭了matlab的界面,一个后仰,瘫倒在后排电脑桌的隔壁上。
挺累的,不过为了赚钱,没办法嘛。
目前自己的途径不多。
地位到了,有名气了,随时都是各种各样的合作。
但目前,只是个大一太♂妹… 的确没什么经济线。
而手头这种,给理论部分写代码实现的工作,其实相当困难。
因为大多数时候,雇主都搞不清代码实现需要什么,给你的信息,用起来非常棘手——一般最后,你还是得了解任务的理论方面,才能把代码写出来。
就算是自己,很多理科领域也是没接触过的。
这不,自己做的任务,理论部分居然是对【自然界生物性多态】的研究。
从来没听过。
只懂理论的雇主给了自己几个方程,说:
"这么简单应该没问题吧。"
没nmb没问题。
你倒是给个数学符号的解释啊!
还有这个什么什么原则是个啥啊,我一介程序员知道个屁啊!
tmd,哼!
理科生果然90%都没有理性思考的能力,只知道自说自话,用着小圈子约定俗称的符号。
可以说是最差劲的产品经理。
还是咱PL好,虽然也有大量依赖惯用约定的情况…
"学姐,喉结露出来了。"
"随便了。"
"裤子上有点顶起来的是啥。"
"尧惘宣你mmp。"
"学姐真棒。"
我没理他,吐槽刚刚干了几小时的活:
"今天真惨啊…"
我tm也有今天。
谁来给我点钱?
"怎么了?"
"赚钱好难。"
尧惘宣迟疑片刻:
"学姐你长得这么好看,不如…"
我打断了他,露出危险的笑容,把左手挽上他的脖子:
"你援助一下?"
当然,我只是开玩笑。
"学姐你这不行啊,这股子好兄弟咱俩谁跟谁的气息,无感。"
我把身子凑近他,右手也挽上了他的脖子:
"你tm的有没有感觉?"
"太有了,不过学姐别再靠近了,镶嵌游戏太伤身体了。"
"哦。"
我翻翻白眼,瞥了一眼他的屏幕:
"第一次看到你用class,感觉怎么样?"
"多写一会儿觉得蛮简单的,不过总觉得整体上理解还是很迷糊。"
此时,从衣服的受力感发觉,裙撑似乎已近直角。
我微微一笑:
"其实class蛮好理解的,不管是继承还是各种方法。"
我一手挽着他,一手抓起他桌上的笔,在纸上写。
class 人 {
std::string name;
void say(){
printf("淦");
printf(this-
>name);}
};
"比如你看,这个类,它只有一个成员name和一个方法say. 那假如我创建一个【人】,name是尧惘宣,调用这个【人】的say方法,就打印一个【淦尧惘宣】。"
"所以呢,而且现在被淦的是我吗?为什么要用两个printf,不用格式化输出?"
他一脸认真地问我。
我有些吃力地颤动一下,勉强睁开微醺的双眼:
"还…还不是为了方便没基础的读者看懂… 诶我在说什么… 总…之回到正…正题,解释什…什么是…是this…"
"嗯,我能理解this的效果,但是并不非常理解为什么这样设计,说起来… 学姐你到底有多大了?"
"我18啊,感觉不出来嘛…"
我红着脸嘟哝。
说了是回到18岁的啦!
"好吧,感觉差不多…所以所谓的this指针,究竟为什么设计成这样。"
我没有直接回他,而是抓过笔,紧紧握了一下,然后在纸上写。
class 人{
string name;
};
void say(人* this){
printf("淦");
printf(this-
>name);}
"呼… 这个是大致的示意… 它不能编译但能简明地说明原理。每一个非静态的方法,其实都会被编译器抽取一个函数出来,并且自动添加一个this参数,类型就是对应类的指针…"
我咬住嘴唇,半晌,继续开口:
"假如我现在有一个变量叫【尧惘宣】,他的name是【"尧惘宣"】,当他用【尧惘宣.say()】调用say方法时,编译器会自动插入一个this指针参数,把它变成【say(&尧惘宣)】。实际上,这个过程要更复杂一些,从say方法确定say函数啥的,不过我先不多讲了。"
"哦,所以非静态方法是啥?"
尧惘宣开始展示他经验知识的贫乏。
"就是类里没有使用static关键字定义的方法。对于静态方法,编译器处理它们会不一样。编译器不会为静态方法插入this指针,比如如果之前的say是静态方法,那么编译器会把【尧惘宣.say()】变成【say()】而不是【say(&尧惘宣)】"
"听起来,编译器还蛮好玩的。"
尧惘宣发出感叹。
"是的,关于【类的方法】的知识,大概就是上面这些…哈…"
刚刚说完,感觉到一股狠劲从下方传来。
可能是地震了吧… 如果不是大一时体重还比较正常,可能会飞起来吧…
"学姐,再讲讲【继承】和【分派】?"
"没问题… 你还行吗?"
"男人不能说不行。"