学校Test5

来源:互联网 发布:成都蚂蚁物流知乎评论 编辑:程序博客网 时间:2024/04/27 16:32

本次实验的目的是让同学们掌握友元函数、类组合、模板等的应用


(一)设计一个用于人事管理的People(人员)类,该类包括数据成员有:number(编号)、name(姓名)、sex(性别)、birthday(出生日期)、id(身份证号)。其中出生日期声明为一个“日期”类内嵌子对象。用成员函数实现对人员信息的录入和显示。要求包括:构造函数,拷贝构造函数、析构函数、成员函数、类组合。在测试程序中声明People类的对象数组,录入数据并显示。


(二)定义BoatCar两个类,两者都有weight属性,定义两者的友元函数getTotalWeight(),计算两者的重量和。


(三)定义一个Cat类,拥有静态数据成员numOfCats记录Cat的个体数目和普通数据成员itsNumber;静态成员函数getNumOfCats(),存取numOfCats。设计程序测试这个类,体会静态数据成员和静态成员函数的用法。


(四)定义一个冒泡排序的函数模板,其功能实现不同类型值的排序操作。

test5-1

#include<iostream>using namespace std;class Date;class People{public:People():number(0),name("tacey"),sex('b'),ID("0"){};void input(Date &d);void display(Date &d);private:int number;string name;char sex;string ID;};class Date{public:Date():day(0),month(0),year(0){};friend People;private:int day;int month;int year;};void People::input(Date &d){    cout<<"pls input the data of the person:"<<endl;    cout<<"number:";cin>>number;cout<<endl;    cout<<"name:";cin>>name;cout<<endl;    cout<<"sex:";cin>>sex;cout<<endl;    cout<<"day/"<<"month/"<<"year";cin>>d.day>>d.month>>d.year;cout<<endl;    cout<<"ID:";cin>>ID;cout<<endl;}void People::display(Date &d){cout<<"编号:"<<number<<endl;cout<<"姓名:"<<name<<endl<<"性别:"<<sex<<endl;cout<<"出生日期:"<<d.day<<"/"<<d.month<<"/"<<d.year<<endl;cout<<"身份证号:"<<ID<<endl;}int main(){People a;Date b;a.input(b);a.display(b);return 0;}//编译运行正常。//有一点不清楚——为什么People类中的display定义在类中会产生错误

test5-2

#include<iostream>using namespace std;class Car;class Boat{public:Boat(float w):weight(w){};void display(Car &);private:float weight;};class Car{public:Car(float w):weight(w){};friend void Boat::display(Car &);private:float weight;};void Boat::display(Car &c){cout<<weight+c.weight<<endl;}int main(){Car c(24.9);Boat b(12.3);b.display(c);return 0;}

test5-3

#include<iostream>using namespace std;class Cat{public:Cat(int i):itsnumber(i){};static void getTotalWeight(){cout<<numofcats<<endl;}void diaplay(){cout<<itsnumber<<endl;}private:static int numofcats;int itsnumber;};int Cat::numofcats=123;int main(){Cat mimi(456);Cat::getTotalWeight();mimi.diaplay();return 0;}

test5-4

#include<iostream>using namespace std;template<class T>void isort(T a[],int n){int i,j;T t;for(i=0;i<n-1;i++)for(j=0;j<n-1-i;j++){if(a[j]>a[j+1]){t=a[j];a[j]=a[j+1];a[j+1]=t;}}for(i=0;i<n;i++)cout<<a[i]<<endl;}int main(){    int num[10]={23,2,3,12,6,12,7,78,23,10};//测试数据char cha[10]={'a','e','g','q','p','f','y','z','m','s'};//测试数据isort(num,10);isort(cha,10);    return 0;}//开始做时数组越界,要注意一下,编译器并不检查数组越界//编译正常通过,运行错误。提示信息:*** stack smashing detected ***: test terminated//returned 134(0x86)//已改正,编译正常,运行正常


原创粉丝点击