多文件程序,类与对象的使用

《 面向对象程序设计 》实验报告二 

(说明:此部分应包含:实验内容、实验步骤、实验代码、实验结果及分析等。)

1. 求3个长方柱的体积,请声明Box类,数据成员包括length(长)、width(宽)、height(高)。要求用 成员函数实现以下功能: (1)由键盘分别输入3个长方柱的长、宽、高; (2) 计算长方柱的体积; (3) 输出3个长方柱的体积;

实验分析:先声明一个类Box,私有数据成员包括length(长)、width(宽)、height(高),在公共域声明函数volum()与display() 分别用来获取所求长方体体积所需的参数和对参数进行处理并返回。最后在主函数中调用所需函数。

类声明文件(*.h文件):

#include <iostream>

using namespace std;

class Box

{

        public:

                

                 void volum();

                 void display();

                

        private:

                 double length;

                 double width;

                 double height;

};

类实现文件(*.cpp文件):

#include "Box.h"

void Box::volum()

{

    cin>>length;

    cin>>width;

    cin>>height;

   

}

void Box::display()

{

    cout<<"长方体体积为"<< length*width*height<<endl;

}

类的使用文件 (*.cpp,主函数文件):

#include "Box.h"

int main()

{

    Box Box1;

    Box1.volum();

    Box1.display();

    return 0;

}

运行结果:

*在定义多文件程序时,类实现与类使用文件中需要调用类声明里面的函数或变量,因此需添加其头文件,这里即指 #include "Box.h"

2. 定义一个日期类Date,该类的对象用于存放一个日期。 要求: (1) 该类可以提供的操作有: void printDate( ); //显示日期,格式如:2010/6/8 (2) 允许对Date类的对象作以下定义: Date d1(2010,6,8); Date d2; Date d3(d1); (3) 在主函数中分别调用d1,d2,d3的printDate( );

实验分析:

定义一个类Date,其中声明printdata()函数用于显示日期和重载函数Date用于存放日期;这里分别定义 Date(int a,int b,int c)用于自定义日期; Date()初始化日期; Date(Date &d)间接调用日期;

类声明文件(*.h文件):

#include<iostream>

using namespace std;

class Date

{

        public:

                 void printData();

                 Date(int a,int b,int c);

                 Date();

                 Date(Date &d);

        private:

                 int year;

                 int month;

                 int day;

                

};

类实现文件(*.cpp文件):

#include"Date.h"

void Date::printData()

{

        cout<<year<<"/"<<month<<"/"<<day<<endl;

}

Date::Date(int a,int b,int c)

        {

                         year=a;

                         month=b;

                         day=c;

                        

                 }

                        

Date::Date(){

        year=1970;

        month=1;

        day=1;

}

Date::Date(Date &d)

{

        year=d.year;

        month=d.month;

        day=d.day;

}

类的使用文件 (*.cpp,主函数文件):

#include"Date.h"

int main()

{

        Date d1(2010,6,8);

        d1.printDate();

        Date d2;

        d2.printDate();

        Date d3(d1);

        d3.printDate();

        return 0;

}

运行结果:

*一个函数不能既作为重载函数,又作为有默认参数的函数。

3. 有如下类定义:

Class Point

{ int xx,yy;

public:

Point():xx(0),yy(0){ }

Point(int x, int y=0):xx(x),yy(y){ }

};

请修改构造函数定义并补充完整main函数,使得主函数中运行语句Point a(2), b[3], c;后能够正确输出构造函数被调用的次数

实验分析:

这里使用了重载函数Point;定义一个静态变量count用于装载函数调用的次数,首先将其初始化为0,每调用一次Point函数对其+1

*普通局部变量:

在任何一个函数内部定义的变量(不加static修饰符)都属于这个范畴。编译器一般不对普通局部变量进行初始化,也就是说它的值在初始时是不确定的,除非对其显式赋值。

普通局部变量存储于进程栈空间,使用完毕会立即释放。

*静态局部变量:

使用static修饰符定义的局部变量,即使在声明时未赋初值,编译器也会把它初始化为0。

静态局部变量存储于进程的静态数据区,即使函数返回,它的值也会保持不变。

类声明文件(*.h文件):

#include<iostream>

using namespace std;

class Point {

  int xx, yy;

  static int count; 

public:

  Point();

  Point(int x, int y );

  static int getCount();

};

类实现文件(*.cpp文件):

#include "Point.h"

int Point::count = 0; 

Point::Point() : xx(0), yy(0) {

  count+=1;

}

Point::Point(int x, int y) : xx(x), yy(y) {

  count+=1;

}

int Point::getCount() {

  return count;

}

类的使用文件 (*.cpp,主函数文件):

#include <iostream>

#include "Point.h"

int main() {

  Point a(2), b[3], c;

  cout << "构造函数被调用的次数: " << Point::getCount() << endl;

  return 0;

}

运行结果:

结果分析:

构造函数被调用次数为5=1+3+1;经分析a(2)、c 皆为一个数则函数会被分别调用一次,而b[3]为一个数组,含3个元素 函数会被调用3次。

  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值