banner

(hs) {…}

对于继承的对象,构造函数在成员初始化列表中使用类名来调用特定的基类构造函数。对于成员对象,构造函数则使用成员名。例如,请看程序清单14.1的最后一个构造函数:

tips

因为该构造函数初始化的是成员对象,而不是继承的对象,所以在初始化列表中使用的是成员名,而不是类名。初始化列表中的每一项都调用与之匹配的构造函数,即name (str)调用String (const char*)构造函数,scores (pd, n)调用ArrayDb (const double *, int)构造函数。

如果不使用初始化列表句法,情况将如何呢?C++要求在构建对象的其他coordinates into something that can fit on our screen. Still inside our drawRenditions function, add the following:

chart.container.selectAll(‘.route’)

.data(routes)

.enter()

.append(‘line’)

.attr(‘x1’, d => projection([d.from.lon, d.from.lat])[0])

.attr(‘y1’, d => projection([d.fr包含其中的编号,提供它们旨在方便引用代码行。

程序清单 2.1 Motto.cpp的完整源代码

这个程序生成一行输出,奥尔胡斯大学的校训:

Solidum petit in profundis!

在程序清单2.1中,第一行包含了一个名为iostream的文件,导致编译器认为在这个地方输入的是文件iostream的全部内容。

2.2.1 预处理器编译指令

C++编译器执行的第一项操作是,调用另一个被称为预处理器的工具对源代码进行检查,这是在编译器每次运行时自动进行的。

在第 1 行,第一个字符是符号#,它指出这行是一个将由预处