实验4 含有类的静态成员与类的友元的C++程序设计

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验4 含有类的静态成员与类的友元的C++程序设计

专业:计算机科学与技术班级:10计本1班学号:姓名:

实验地点:B102实验时间:2011/11/1 指导教师:李佐勇

一、实验目的

1.理解类的静态成员解决共享问题的机制;

2.掌握类的静态数据成员与静态函数成员的实现方法;

3.理解利用友元关系实现数据共享的机制,掌握类的友元函数以及友元类的实现方法;

4.学习多文件结构在C++程序中的使用。

二、实验环境

一台PC机,Windows XP操作系统,Visual C++ 6.0开发环境。

三、实验内容

1.设计一个解决王婆卖瓜问题的程序。王婆卖瓜,每卖一个瓜,需记录该瓜的重量,还要记录所卖出的总重量和总个数,同时还允许退瓜。设计一个具有静态数据、函数成员的watermelon类。

实现提示:西瓜类有3个数据成员:重量weight、总重量total_weight以及总个数total_number。因为不论西瓜是否卖出,总重量total_weight和总个数total_number这两个数据总是要保留的,且这两个数据与单个的西瓜无关联,因此这两个数据要申明为静态数据成员。成员函数:卖瓜用构造函数模拟,退瓜用析构函数模拟,瓜重用disp成员函数给出屏幕提示。为了用不与特定对象相联系的静态成员函数来访问静态数据,还需要定义一个显示总重量和总个数的静态成员函数total_disp。

2.设计一个程序,其中有3个类,即CBank、BBank和GBank,分别为中国银行类、工商银行类和农业银行类。每个类都包含一个私有数据balance,用于存放储户在该行的存款数,另有一个友元函数total用于计算储户在这3家银行中的总存款数。

3. 设计一个程序,其中有2个类,Point类为点类,包含2个私有数据x和y,表示点的坐标,line类为直线类,包含3个私有数据a、b和c,表示直线方程ax+by+c=0。另有一个友元函数dist,用于计算一个点到直线的距离。点与直线之间的距离计算公式如下:

2 2b a c

by

ax

d

++

+

=

要求:

①将Point与Line类的定义放在头文件head.h中;

②将Point与Line类的实现部分放在PL.cpp中;

③主函数(类的使用)文件定义为:Lab04_3.cpp。

四、实验记录

1.#include

using namespace std;

class watermelon

{

public:

watermelon(double w){

weight=w;

total_weight+=w;

total_number++;

}

~watermelon(){

total_weight-=weight;

total_number--;

}

static void total_disp(){

cout<<"Now total weight is:"<

cout<<"Now total number is:"<

}

void disp(){

cout<<"The weight is:"<

}

private:

double weight;

static double total_weight;

static int total_number;

};

double watermelon::total_weight=0.0;

int watermelon::total_number=0;

void main(){

watermelon W1(25.8);

W1.disp();

watermelon::total_disp();

watermelon W2(23.5);

W2.disp();

watermelon::total_disp();

watermelon W3(36.2);

W3.disp();

watermelon::total_disp();

}

2. #include

using namespace std;

class CBank

{

public:

friend int total();

CBank()

{

int w=10000;

balance=w;

}

private:

int balance;

};

class BBank

{

public:

friend int total();

BBank()

{

int w=20000;

balance=w;

}

private:

int balance;

};

class GBank

{

public:

friend int total();

GBank() {

int w=30000;

balance=w;

}

private:

int balance;

};

int total(){

CBank a;

BBank b;

GBank c;

int balance;

balance=a.balance+b.balance+c.balance;

return balance;

}

void main(){

相关文档
最新文档