Codelearn

分享Python,C/C++相关的技术文章, 海洋饼干叔叔@重庆大学

  朵拉大学毕业,因学业优秀,得以进入华为公司工作。显然,这意味着朵拉离开原大学,成为华为公司的一员。如果把朵拉(dora)视为一个对象,同时把华为(huawei)视为一个容器,下述代码表征了dora对象加入huawei容器的行为:

1
huawei.push_back(dora);

  遗憾的是,上述代码的实际执行结果并不符合预期。按照本书19.2节的讨论,容器通过拷贝复制行为制造了一个dora的复制品,真正加入华为的是dora的复制品,而不是本尊。原有对象dora依然存在于内存中。

  C++提供了移动拷贝构造函数以及移动赋值函数,它们可以把一个预期不再被需要的对象的资源,如string对象的缓冲区,直接移入另一个对象,从而避免不必要的对象复制行为,进而提高程序运行的效率。

  C语言里的结构是一种复合数据类型,如下述代码中的Employee类型。在该类型的单一对象里,同时存储了员工姓名、是否已退休、月薪、性别等信息。

1
2
3
4
5
6
struct Employee {
char sName[10]; //姓名
bool bRetired; //是否已退休
int iSalary; //月薪
GenderType gender; //性别
}; //注意末尾分号不能少

  在使用C++进行程序设计时,我们通常使用第13章中讨论的类(class)▲来达到类似目的,结构体并非必须,故本章以在线方式提供。

  “李杜文章在,光焰万丈长”,唐诗无疑是中国古代文学最灿烂的篇章之一。现代人发表论文,会互相引用,喝酒吃饭,也经常会谈及谁谁谁是我哥们。作为当时最重要的文学形式,唐代的诗人也经常会在诗文中提及自己的好朋友。杜甫比李白小十一岁,二者相识于杜甫父亲杜闲家中,彼时正是李白因触怒权贵放归山林之时。两人一见,杜秒变小迷弟。杜在《与李十二白同寻范十隐居》中描绘了两人的亲密关系:”余亦东蒙客,怜君如兄弟。醉眠秋共被,携手日同行”。不仅如此,在两人各奔东西后,杜甫压抑不住对李白的思念,写了多首提及李白的诗。例如《梦李白》中云:”三夜频梦君,情亲见君意”。能连续三个晚上做梦都梦到李白,可见交情不浅。

  通过分析全唐诗中各位诗人之间的“引用”关系,可以描绘出当时诗坛的大致朋友圈图景:谁跟谁熟? 谁是圈子里的带头大哥? 全唐诗有4万多首,人工一首一首地筛查费时费力,这种重复的统计性质的工作正是计算机最擅长的。

C语言的枚举类型(enum)用于表达对象所属的类别。比如,人分男女,大学的学生则又分为专科生、本科生、硕士研究生和博士研究生。C语言中的联合(union)类型则为我们提供了操纵和解读“数据”的独特方式,它允许对同一块内存以不同的方式进行解读和操纵。

在C++程序中,上述两项特性使用得不多,故本章内容以在线方式提供。至于C++中的枚举类(enum class),我们在第13章讨论。