您好,欢迎来到华佗健康网。
搜索
您的当前位置:首页c++实验四

c++实验四

来源:华佗健康网


实验四:静态成员和友元的使用

实验学时:2

实验类型:验证

实验要求:必修

一、实验目的

1、理解静态成员在数据共享中的作用。

2、掌握友元的定义和使用方法。

二、实验内容

1、输入下面的程序(教材第131页例5-5),体会静态数据成员的特点。

#include

class Test

{ private:

int k;

public:

static int n;

Test (int kk)

{ k=kk; n++; }

void Display( )

{ cout<<\"n=\"<int Test::n=0;

void main( )

{ Test t1(10);

t1.Display( );

Test t2(20);

t2.Display( );

Test::n++;

k=\"<t2.Display( );

}

2、输入下面的程序(教材第136页例5-7),体会友元函数的特点。

#include

#include

class point

{ private:

double x,y;

public:

point(double xx,double yy)

{ x=xx; y=yy; }

double get_x( )

{ return x; }

double get_y( )

{ return y; }

friend double distance(point p1, point p2)

{ return sqrt((p1.x-p2.x)*(p1.x-p2.x)+(p1.y-p2.y)*(p1.y-p2.y)); }

};

void main( )

{ point myp1(1,1),myp2(4,5);

cout<<\"the distance is:\"<}

3、编写一个程序:声明一个Cat类,拥有静态数据成员HowManyCats,用以记录Cat的个体数目;拥有静态成员函数GetHowMany(),用以存取HowManyCats。设计程序并测试这个类,体会静态数据成员好静态成员函数的用法。

4、编写一个程序:输入几个学生的姓名、英语和计算机成绩,然后按照总分从高到低排序。要求定义一个student类,用友元函数实现排序。

三、实验原理

1、静态成员:在编译时创建,一直到程序结束,任何对象都可以访问。对静态数据成员要进行引用性声明和定义性声明。定义形式为:static 数据类型 数据成员名

静态成员函数调用格式:类名∷静态成员函数名( )

2、友元:外部函数可以例外地访问类的任何私有成员。在类定义外定义,使用类对象引用作参数,可以访问对象的公开、私有成员。

友元关系是单向的、不具有交换性、不具有传递性。

四、程序清单

1、实验内容3的参考程序如下:

#include

#include

class Cat

{ char names[10];

public:

static int HowManyCats;

static int GetHowMany( )

{ return HowManyCats; }

Cat(char n[])

{ strcpy(names,n);HowManyCats++; }

};

int Cat::HowManyCats=0;

void main( )

{ Cat c1(\"aaa\"),c2(\"bbb\");

cout<<\"the number is:\"<}

2、实验内容4的参考程序如下:

#include

#include

class Student

{ char names[10];

int math,computer;

public:

void copy(char n[],int m,int c)

{ strcpy(names,n); math=m; computer=c; }

void display( )

{ cout<friend void mysort(Student st[],int n);

};

void mysort(Student st[],int n)

{ int i,j,m,c;

char name[10];

for (i=0; ifor (j=i; jif (st[i].computer+st[i].math{ strcpy(name,st[i].names); m=st[i].math; c=st[i].computer;

strcpy(st[i].names,st[j].names);st[i].math=st[j].math;

st[i].computer=st[j].computer;

strcpy(st[j].names,name); st[j].math=m; st[j].computer=c;

}

}

void main( )

{ int n,i,m,c;

char name[10];

Student st1[10];

cin>>n;

for (i=0; i{ cin>>name>>m>>c;

st1[i].copy(name,m,c);

}

cout<<\"before sort:\"<for(i=0;ist1[i].display( );

mysort(st1,n);

cout<<\"after sort:\"<for(i=0;ist1[i].display( );

}

五、思考题

将实验内容1中的main函数改成如下形式,程序的执行结果又会怎样。 void main( ) { Test t1(10); Test t2(20); t1.Display( ); t2.Display( ); Test::n++; t2.Display( ); }

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo0.com 版权所有 湘ICP备2023021991号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务