C++作业79.docx

上传人:b****3 文档编号:1448178 上传时间:2022-10-22 格式:DOCX 页数:23 大小:186.69KB
下载 相关 举报
C++作业79.docx_第1页
第1页 / 共23页
C++作业79.docx_第2页
第2页 / 共23页
C++作业79.docx_第3页
第3页 / 共23页
C++作业79.docx_第4页
第4页 / 共23页
C++作业79.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

C++作业79.docx

《C++作业79.docx》由会员分享,可在线阅读,更多相关《C++作业79.docx(23页珍藏版)》请在冰豆网上搜索。

C++作业79.docx

C++作业79

C++作业(7-9)

 

实验报告

 

课程名称面向对象程序设计

专业班级

姓名

学号

 

计算机技术与工程学院

和谐勤奋求是创新

 

实验类别

验证

同组人数

1

成绩

指导教师签字:

实验七利用友元编程

一、实验目的

1.掌握友元函数和友元类的概念、定义和作用。

2.会使用友元编程。

3.进一步学习内存空间动态分配和释放的方法。

二、实验内容

1.有一个向量类Vector,包括一个点的坐标位置x和y,设计两个友元函数,实现两个向量的加法和减法运算。

2.定义一个由y=ax+b确定的直线类Line,该类的构造函数初始化直线,成员函数Print显示该直线方程,友元函数SetPoint()求解两条直线的交点。

3.下列程序是有关友元类的,程序中将A类声明为B类的友元类,A类中所有的成员函数都是B类的友元函数,请给程序填空。

#inlcude

classB;

classA

{

private:

intx;

public:

A(intxx){x=xx;}

intSet(B&);

intGet(){returnx;}

};

classB

{

private:

intx;

public:

B(intxx){①}

friend②

};

intA:

:

Set(③)

{returnx=b.x;}

voidmain()

{Aa(10);

Bb(20);

cout<

a.Set(b);

cout<

}

三、实验步骤

1.运用学过的知识,实验前在纸上写出程序。

2.根据程序要求,先定义类,包括其数据成员和成员函数。

3.分析使用的是友元类还是友元函数,通过友元要处理哪些问题。

4.在主函数中完成相应的功能。

5.上机编辑、编译、调试和运行,并修改错误。

四、实验报告

1.写出实验目的。

2.写出实验内容和程序清单。

3.说明对编程分析、运行结果、难点、解决方法、结论和编程体会。

 

二.实验内容

1.#include

classVector

{

public:

Vector(doublem=0,doublen=0)

{

x=m;

y=n;

}

voiddisplay()

{

cout<<"("<

}

friendVectoroperator+(Vector&a,Vector&b)

{

Vectort;

t.x=a.x+b.x;

t.y=a.y+b.y;

returnt;

}

friendVectoroperator-(Vector&a,Vector&b)

{

Vectort;

t.x=a.x-b.x;

t.y=a.y-b.y;

returnt;

}

~Vector()

{}

private:

doublex,y;

};

voidmain()

{

Vectora1(6,8),a2(9,5),a3,a4;

cout<<"向量a1=";

a1.display();

cout<<"向量a2=";

a2.display();

a3=a1+a2;

cout<<"a1+a2=";

a3.display();

a4=a1-a2;

cout<<"a1-a2=";

a4.display();

}

2.

2.定义一个由y=ax+b确定的直线类Line,该类的构造函数初始化直线,成员函数Print显示该直线方程,友元函数SetPoint()求解两条直线的交点。

#include

usingnamespacestd;

classLine

{

public:

Line(doublem=0,doublen=0)

{

a=m;

b=n;

}

voidprint()

{

cout<<"直线y="<

}

voidfriendsetpoint(Line&L1,Line&L2)

{

doublex,y;

if(L1.a==L2.a)

cout<<"两直线平行,无交点";

else

{

x=(L1.b-L2.b)/(L2.a-L1.a);

y=L1.a*x+L1.b;

cout<<"两直线交点为("<

}

}

~Line(){}

private:

doublea,b;

};

voidmain()

{

LineL1(4,6),L2(9,8);

L1.print();

L2.print();

setpoint(L1,L2);

}

3.#include

classB;

classA

{

private:

intx;

public:

A(intxx){x=xx;}

intSet(B&);

intGet(){returnx;}

};

classB

{

private:

intx;

public:

B(intxx){x=xx;}

friendclassA;

};

intA:

:

Set(B&b)

{returnx=b.x;}

voidmain()

{Aa(10);

Bb(20);

cout<

a.Set(b);

cout<

}

个人总结:

本次实验目的主要是熟悉使用友元编程,在第一个程序中使用了两个友元函(friendVectoroperator+(Vector&a,Vector&b)和friendVectoroperator-(Vector&a,Vector&b))数进行对向量的运算,从而实现了向量之间的加减运算,通过主函数赋值,得出运算结果。

第二个程序主要实现的是求不同的两二维直线是否相交,若相交求交点的运算,通过友元函数(voidfriendsetpoint(Line&L1,Line&L2))对保护成员的调用,实现了函数功能,最后一个程序是利用友元类来实现函数功能。

实验题目

实验八继承和派生的编程

实验室

9302机房

实验时间

2015年月日

实验类别

验证

同组人数

1

成绩

指导教师签字:

一、实验目的

1.了解继承在面向对象程序设计中的重要作用。

2.理解继承与派生的概念,掌握单继承和多继承的定义方法。

3.熟悉公有派生和私有派生的访问特性。

4.掌握继承中基类和派生类的构造函数定义和调用过程。

5.了解虚基类的作用和用法,会使用虚基类,学习虚基类在解决二义性问题中的作用。

二、实验内容

1.有以下程序,请完成下面的工作:

(1)阅读程序,写出运行后的输出结果;

(2)然后上机运行,验证结果是否正确;

(3)分析程序执行过程,尤其是调用构造函数和析构函数的过程。

#include

classA

{public:

A(){cout<<“constructingA”<

~A(){cout<<“destructingA”<

};

classB:

publicA

{public:

B(){cout<<“constructingB”<

~B(){cout<<“destructingB”<

};

classC:

publicB

{public:

C(){cout<<“constructingC”<

~C(){cout<<“destructingC”<

};

voidmain()

{Cc1;

}

2.事先编写好程序:

分别声明Teacher(教师)类和Cadre(干部)类,采用多重继承方式由这两个类派生出新类Teacher_Cadre(教师兼干部),要求:

(1)在两个基类中都包含有姓名、年龄、性别、地址、电话等数据成员;

(2)在Teacher类中还包含数据成员title(职称),在Cadre类中还包含数据成员post(职务),在Teacher_Cadre类中还包含数据成员wages(工资);

(3)对两个基类中的姓名、年龄、性别、地址、电话等数据成员用相同的名字,在引用这些数据成员时,指定作用域;

(4)在类体中声明成员函数,在类外定义成员函数;

(5)在派生类Teacher_Cadre的成员函数show中调用Teacher类中的display函数,输出姓名、年龄、性别、地址、电话,然后再用cout语句输出职务和工资。

三、实验步骤

1.运用学过的知识,实验前在纸上写出程序。

2.根据程序要求,分析用到几个类,哪些是基类,哪些是派生类,采用何种继承方式。

3.先设计基类,再设计派生类,派生类成员函数应该处理哪些数据。

4.在主函数中创建对象,创建基类对象还是派生类对象时,通过对象调用哪些成员函数。

注意:

基类和派生类的构造函数和析构函数的执行顺序。

5.上机编辑、编译、调试和运行,并修改错误。

四、实验报告

1.写出实验目的。

2.写出实验内容和程序清单。

3.写出编程思路和类层次图,体会基类与派生类的关系。

4.说明对编程分析、运行结果、难点、解决方法、结论和编程体会。

 

1.

2.

#include

#include

usingnamespacestd;

classteacher

{

public:

teacher(stringnam,inta,chars,stringad,stringtele,stringt):

name(nam),age(a),sex(s),address(ad),telephone(tele),title(t){}

voiddisplay();

protected:

stringname;

intage;

charsex;

stringaddress;

stringtelephone;

stringtitle;

};

voidteacher:

:

display()

{

cout<<"姓名:

"<

:

name<

cout<<"年龄:

"<

:

age<

cout<<"性别:

"<

:

sex<

cout<<"地址:

"<

:

address<

cout<<"电话:

"<

:

telephone<

cout<<"职称:

"<

:

title<

}

classcadre

{

public:

cadre(stringnam,inta,chars,stringad,stringtele,strin

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1