1、计算机工程学院实验报告 课程名称:C++程序设计教程 班级: 实验成绩: 指导教师: 姓名: 实验项目名称:类得设计与对象使用 学号: 上机实践日期: 实验项目编号:实验1 组号: 上机实践时间: 一、 目得 1、熟悉C++开发环境。 2、掌握多文件结构程序项目得建立过程。 3、初步掌握面向对象程序得多文件结构项目得开发运行步骤。 4、掌握类得定义与使用以及类对象得声明与使用方法,理解具有不同访问属性得成员得访问方式。 5、掌握构造函数与析构函数得作用与编写方法。 6、了解并掌握静态成员、常成员得使用。 二、实验内容与设计思想 1.下面得程序
2、在编译时会出错,请修改程序,使之能正确运行。然后得到得正确程序分成3个文件。文件MyClass、h包括类得定义,文件MyClass、cpp包括类成员函数得实现,文件App、cpp包括类得使用。调试、运行该程序,使之获得正确结果。
#include
3、MyClass(int a = 0, int b =0){ x = a; y = b; } void MyClass::Print { cout << "x = " << x << endl; cout << "y = " << y << endl; } int main { MyClass obj1,obj2(5,8); obj1、x =1; obj1、y =3; obj1、Print; obj2、Print; return 0; } 实验代码: MyClass、h #ifndef MYCLASS #define
4、 MYCLASS
// MyClass、h头文件得内容
class MyClass{
public:
MyClass { x = 0; y = 0; }
MyClass(int a = 0, int b = 0);
void Print;
private:
int x, y;
};
#endif
MyClass、cpp
#include"MyClass、h"
#include
5、s::Print{
cout << "x = " << x << endl;
cout << "y = " << y << endl;
}
App、cpp
#include
6、 得长与宽分别为 3、6 与 4、5。(先定义矩形类再实例化两个对象)
实验代码:
#include
7、 int Long;//长 int Wide;//宽 }; int main { rectangular rec1(1, 3), rec2(5, 8); cout << "矩形1得面积为:" << rec1、Area << endl << "矩形1得周长为:" << rec1、Perimeter << endl; cout << "矩形2得面积为:" << rec2、Area << endl << "矩形2得周长为:" << rec2、Perimeter << endl; return 0; } 3、 下面程序中定义了一个整型动态数组,编写了3个构造函数。
8、include
9、ray::IntArray( int sz ) { size = sz; // 设置数据成员 ia = new int[ size ]; for ( int ix=0; ix < size; ++ix ) ia[ix] = 0; // 初始化数组元素 } IntArray:: IntArray( int *array, int sz ) { size = sz; // 设置数据成员 ia = new int[ size ]; for ( int ix=0; ix < size
10、 ++ix ) ia[ix ] = array[ ix ]; // 拷贝数据成员 } IntArray:: IntArray( const IntArray &rhs ) { size = rhs、size; ia = new int[ size ]; for (int ix = 0; ix < size; ix++ ) ia[ ix ] = rhs、ia[ ix ]; } void IntArray::printAll { for ( int ix=0; ix < size; ++ix )
11、 cout< 12、个函数重复相同得代码时,可将这部分代码抽取出来,形成独立得函数,以便共享。以后如果需要改变这些实现,则只需改变一次,而且这种实现得共享本质更容易为大家所理解。怎样把构造函数中得代码抽取出来形成独立得共享函数呢?请给出一种可能得实现。按您给出得实现方法修改程序并重新编译运行。
实验代码:
#include 13、// 用静态数组array得前sz个元素初始化新数组
IntArray(const IntArray &rhs); // 拷贝构造函数
void printAll;
void mon(int *array, int sz);
~IntArray { delete[] ia; }
private:
int *ia;
int size;
};
IntArray::IntArray(int sz) {
int *array = NULL;
size = sz; // 设置数据成员
mon(array, size);
}
IntArray 14、IntArray(int *array, int sz) {
size = sz; // 设置数据成员
mon(array, size);
}
IntArray::IntArray(const IntArray &rhs)
{
int *array = rhs、ia;
mon(array, rhs、size);
}
void IntArray::printAll
{
for (int ix = 0; ix < size; ++ix)
cout << ia[ix] << " ";
cout << endl;
}
void Int 15、Array::mon(int *array, int sz)
{
size = sz;
ia = new int[size];
if (array != NULL)
{
for (int ix = 0; ix < size; ++ix)
ia[ix] = ix + 1;
}
else
{
for (int ix = 0; ix < size; ++ix)
ia[ix] = 0;
}
}
int main
{
int a[10] = { 1,2,3,4,5,6,7,8,9,10 };
IntArray arr1(10), 16、 arr2(a, 5), arr3(arr2);
arr1、printAll;
arr2、printAll;
arr3、printAll;
return 0;
}
4、设有一个点myPoint类得定义如下:
class myPoint {
public:
myPoint(double x0=0、0,double y0=0、0):x(x0),y(y0) {}
myPoint(myPoint &np):x(np、x),y(np、y) {}
double GetX { return x;}
double GetY {return y;} 17、
void SetX(double x0) {x=x0;}
void SetY(double y0) {x=y0;}
void SetPoint(double x0,double y0) {x=x0;y=y0;}
void SetPoint(myPoint &np) { x=np、x; y=np、y;}
double GetLength(myPoint p) {
return sqrt((xp、x)*(xp、x) +(yp、y)*(yp、y));
}
void Printit { cout<<" ("< 18、<<") ";}
private:
double x ,y;
};
试定义一个三角形Triangle类,在Triangle类中以点myPoint类得3个对象p1、p2、p3作为数据成员,表示三角形得三个顶点。Triangle类具有计算三角形得周长与面积得功能。请编写程序上机调试并运行。:
实验代码:
#include 19、Point &np) :x(np、x), y(np、y) {}
double GetX { return x; }
double GetY { return y; }
void SetX(double x0) { x = x0; }
void SetY(double y0) { x = y0; }
void SetPoint(double x0, double y0) { x = x0; y = y0; }
void SetPoint(myPoint &np) { x = np、x; y = np、y; }
double GetLength(myPoint p) { 20、
return sqrt((x p、x)*(x p、x) + (y p、y)*(y p、y));
}
void Printit { cout << " (" << x << "," << y << ") "; }
private:
double x, y;
} ;
class Triangle {
public:
//面积
double Area(double a, double b, double c)
{
double p;
p = (a + b + c) / 2;
return sqrt(p*(p a)*(p b)*(p 21、 c));
}
//周长
double Perimeter(double a, double b, double c)
{
return a + b + c;
}
myPoint p1,p2, p3;
};
int main
{
Triangle tri;
tri、p1、SetPoint(1, 1);
tri、p2、SetPoint(3, 0);
tri、p3、SetPoint(2, 3);
cout << "三角形得顶点为:";
tri、p1、Printit;
tri、p2、Printit;
tri、p3、Printit;
22、
cout << endl;
cout << "三角形得面积为:" << tri、Area(tri、p1、GetLength(tri、p2), tri、p2、GetLength(tri、p3), tri、p1、GetLength(tri、p3)) << endl;
cout << "三角形得周长为: " << tri、Perimeter(tri、p1、GetLength(tri、p2), tri、p2、GetLength(tri、p3), tri、p1、GetLength(tri、p3)) << endl;
return 0;
}
三、实验使用环境
Windows 10 VS2017
四、 实验小结
1)了解了对接口编程得思想,学会了将类得定义放在头文件中,函数得实现应放在、cpp文件中,将类成员函数得实现与类得使用放在不同得cpp文件中得编程模式,也学会了用预编译条件指令来限制头文件内容得引入,避免头文件内容被重复引入得方法。
2)学会了先构造类再实例化对象得编程思想,初步理解了面向对象得概念,深入了解了构造函数与析构函数得特点。
3)深入了解了构造函数与析构函数得特点。
4)学会了将重复代码抽出,简化代码得方法。
5)学会了将一个类作为另一个类得数据成员时得初始化,函数调用。
©2010-2025 宁波自信网络信息技术有限公司 版权所有
客服电话:4009-655-100 投诉/维权电话:18658249818