1. 包含对象的类,has-a关系
c++和约束:c++包含让程序员能够限制程序结构的特性,使用explicit防止单参数构造函数的隐式转换,使用const限制方法修改数据,这么做的根本原因是:在编译阶段出现错误优于在运行阶段出现的错误。
explicit Student(const string& s) : name(s), score() {}
explicit Student(int n) : name("Nully"), score(n) {}:score()是成员对象的初始化。如果是继承关系,应该采用 : 类名(初始化量)
在第二个构造构造参数中,第一个参数是数组的元素个数,而不是数组的值。
Student doh("Homer", 10);
doh = 5; // reset name to "Nully", reset ro empty array of 5 elements
如果没有采用explicit,则将构造函数调用Student(5)将5转换成一个临时的Student对象,并将"Nully"来设置name的值。