第一范文网 - 专业文章范例文档资料分享平台

实验5(1) 参考答案

来源:用户分享 时间:2025/5/29 1:44:09 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

};

Member1 obj1, obj2; int y;

class New { public: }; int main( ) { }

New ex( (5) ); ex.show( ); return 0;

New( (3) ): (4) { } ~New( ) { }

void show( ) { }

Member1 m1; Member2 m2; int z;

cout << \cout << \z = e;

cout << \

private:

② 观察程序的运行结果,分析构造函数与析构函数的调用次序。 答:运行结果如下: constructing Member1 1 constructing Member1 2 constructing Member1 3 constructing Member2 4 constructing New 5 New z = 5

donstructing New

donstructing Member2 donstructing Member1 donstructing Member1 donstructing Member1 Press any key to continue

构造函数的调用次序是:

首先调用对象成员的构造函数,多个对象成员时按定义顺序执行其对应的构造函数;然后调用对象自身的构造函数。析构时其调用顺序与构造函数顺序相反。

New ex(1,2,3,4,5);时,构造函数的调用调用顺序为: m1的构造函数Member1 1

m2的构造函数,首先调用obj1的构造函数Member1 1,然后调用obj2的构造函数Member1,最后调用m2 自己的构造函数Member2

调用ex自身的构造函数 New 析构函数调用的过程相反。

③ 改变Member2构造函数初始化表中各项的次序,并再次运行程序,观察结果并分析构造函数与析构函数的调用次序。

答:因为构造函数的调用与初始化表中各项的次序无关,如果参数对应的对象成员不变,结果也不变。

④ 在Member2构造函数中添加语句obj1.x = 50是否可行?分析其原因。 答:不可行。 原因:

输出窗口区显示:error C2248: 'x' : cannot access private member declared in class 'Member1'

因为x在Member1 中是私有成员,在Member2类中不能直接访问Member1中的私有成员。

⑤ 在main( )中添加下列语句是否可行?分析其原因。 ex.m1.show( ); ex.m2.show( ); 答:不可行。 原因:

输出窗口显示:'m1' : cannot access private member declared in class 'New' 'm2' : cannot access private member declared in class 'New'

m1,m2在New类中属于私有的对象成员,在类外的main函数中不可直接访问。 ⑥ 在Member2与New中的show( )函数添加语句,使得main( )中ex.show( );能输出所有x、y和z的值。

答:Member2中的show( )函数修改为如下: void show( ) { cout<<\ obj1.show(); cout<<\ obj2.show(); cout << \ }

New中的show( )函数修改为如下: void show( ) { cout<<\ \

cout<<\ \ cout << \ } 运行结果为:

constructing Member1 1 constructing Member1 2 constructing Member1 3 constructing Member2 4 constructing New 5 m1. Member1 x = 1 m2.

obj1. Member1 x = 2 obj2. Member1 x = 3 Member2 y = 4 New z = 5

donstructing New

donstructing Member2 donstructing Member1 donstructing Member1 donstructing Member1 Press any key to continue 题目2指导:

① Date类、Student类与main( )的主要代码如下,在横线上补充相应的语句。

class Date { public:

Date( int y = 2000 , int m = 1 , int d = 1 ) { }

void Show( ) { }

int GetYear( ) { }

int GetMonth( ) { }

return month; return year;

cout << year << \year = y; month = m; day = d;

};

int GetDay( ) { } int year; int month; int day;

return day;

private:

class Student { public: }; int main( ) {

Student st[5] = { (5) }; PrintStudent( (6) ); SortByName( (7) );

Student( (1) ): (2) { }

void Show( ) { }

char * GetName( ) { }

int GetScore( ) { }

Date GetDate( ) { }

char name[20]; int score; Date birthday;

return (4) ; return score; return name;

cout << name << \ (3) ; strcpy( name, p ); score = s;

private:

}

PrintStudent( (8) ); SortByScore( (9) );

PrintStudent( (10) ); SortByBirthday( (11) ); PrintStudent( (12) ); return 0;

② 声明、实现下列函数,并运行程序进行测试。

int CompareDate( Date d1, Date d2 ); void SortByName( Student *, int num ); void SortByScore( Student *, int num ); void SortByBirthday( Student *, int num ); void PrintStudent( Student *, int num );

四、实验预习

(1)阅读主教材第5章全部内容,理解教材中的示例程序。 (2)阅读本次实验内容及对应的实验指导,提前编写源程序。

搜索更多关于: 实验5(1) 参考答案 的文档
实验5(1) 参考答案.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c15ovm659742v3bv3zrh9_3.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top