voidfn (Advisor & advisor)GraduateStudent gs("Yen Kay Doodle", advisor);1 /..1Jvoidmain ()Advisor da;fn (da);1Jmain()函数中创建了Advisor对象,以此为参数调用了函数fn()。fn()中创建了GraduateStudent对象,初始化的参数为“YenKayDoodle”和advisor
void fn ( Advisor & advisor ) { GraduateStudent gs(" Yen Kay Doodle " , advisor ) ; //. } void main ( ) { Advisor da ; fn ( da ) ; } main( )函数中创建了Advisor对象,以此为参数调 用了函数fn( )。 fn( )中创建了GraduateStudent对象,初始化的参 数为“Yen Kay Doodle ”和advisor
Student部分16.3派生类的构造GraduateStudent增加部分基类初始化由Student(pName)来完成派生类的构造总是由基类的初始化开始的。基类在派生类对象中的空间位置也是如此如果在初始化时描述顺序为:advisor(adv), Student(pName)那么,派生类构造时,仍然是先调用基类的构造函数
• 基类初始化由Student(pName)来完成。 • 派生类的构造总是由基类的初始化开始的。 • 基类在派生类对象中的空间位置也是如此。 • 如果在初始化时描述顺序为: advisor(adv) ,Student(pName) • 那么,派生类构造时,仍然是先调用基类的 构造函数
16.3派生类的构造如果Student类中没有形如Student(pName)的构造函数。则派生类会调用基类的默认构造函数如果找不到匹配的构造函数,则通不过编译此处调用的构造函数是以pName为参数由于GraduateStudent类参数pName为“YenKay Doodle
• 如果Student类中没有形如Student(pName)的 构造函数。 • 则派生类会调用基类的默认构造函数。 • 如果找不到匹配的构造函数,则通不过编译。 • 此处调用的构造函数是以pName为参数。 • 由于GraduateStudent类参数pName为“Yen Kay Doodle”
16.3派生类的构造所以基类的构造函数调用Student(pName)产生一个“Yen Kay Doodle”的Student对象派生类构造函数启动时,√首先量好了派生类对象的大小尺寸V规定了对象分配的位置(给this赋值)于是后面基类构造函数所产生的对象就构造在这个this指针指向处
• 所以基类的构造函数调用Student(pName)产 生一个“Yen Kay Doodle”的Student对象。 • 派生类构造函数启动时, ✓ 首先量好了派生类对象的大小尺寸, ✓ 规定了对象分配的位置(给this赋值) • 于是后面基类构造函数所产生的对象就构造 在这个this指针指向处
16.3派生类的构造advisor是GraduateStudent的数据成员,是Advisor类对象。advisor表示以adv的值来初始化advisor。因为参数adv为Advisor对象。所以,advisor将调用Advisor的默认拷贝构造函数(Advisor自已没有定义拷贝构造函数)。在派生类构造函数体内,qualifierGrade = O ;完成对其数据成员的赋值
• advisor 是 GraduateStudent 的 数 据 成 员 , 是 Advisor类对象。 • advisor表示以adv的值来初始化advisor。 • 因为参数adv为Advisor对象。 • 所以,advisor将调用Advisor的默认拷贝构造函 数(Advisor自己没有定义拷贝构造函数)。 • 在派生类构造函数体内, “qualifierGrade = 0 ; ” 完成对其数据成员的赋值