1、实验二+类程序设计实验实验二 类程序设计实验【实验目的】1掌握类和对象的概念、定义和使用方法。2学习数据成员与成员函数的访问方式。3掌握构造函数、拷贝构造函数和析构函数的使用方法。【实验内容】1阅读下列程序,写出执行结果:(1) #includeclass Circlepublic: Circle(float radius) Radius=radius; cout构造函数被调用endl; Circle() cout析构函数被调用!endl; float GetArea()return 3.14*Radius*Radius;private: float Radius;int main() flo
2、at radius; coutradius; Circle obj(radius); cout半径为radius圆的面积为:obj.GetArea()endl; return(0); (2) #includeclass Circlepublic: Circle(float radius) Radius=radius; cout构造函数被调用endl; Circle(Circle& p) Radius=p.Radius; cout拷贝构造函数被调用endl; Circle() cout析构函数被调用!endl; float GetArea()return 3.14*Radius*Radius;p
3、rivate: float Radius;int main() float radius; coutradius; Circle obj1(radius); Circle obj2(obj1); cout对象1的面积为:obj1.GetArea()endl; cout对象2的面积为:obj2.GetArea()endl; return(0);2 设计一个银行账户(Account)类,包含户名、帐号以及当前余额属性,可完成开户、存款、取款和查询余额等行为。银行账户类的定义如下:class Accountprivate: char mName20; /银行账户的户名 long mSN; /本账户的
4、帐号 float mBalance; /本账户当前的余额public: Account(char name,long num,float amount); /类的构造函数 Account(); /类的析构函数 void deposit(float amount); /往账户中存款 int withdraw(float amount); /从账户中取款 float getBalance(); /查询余额;请根据上述给定的类,完善其相应的构造函数及成员函数的定义,并编写主函数实现测试。3设计一个股票(Stock)类,包含股票名称、股票代码、股票的数量、每股的价格、股票的总值等属性,可完成获得股票(
5、用构造函数完成)、增持、卖出股票、更新股票价格、显示所持股票的信息等行为。(附加题)4定义一个复数类。要求有构造函数、拷贝构造函数和析构函数,并能实现复数的加、减、乘、除等基本运算。5改进实验内容2,用类模板形式定义一个复数类,并实现复数的加、减、乘、除等基本运算。(附加题)6设计一个用于学生管理的Student类,属性有:学号、年龄、性别、出生日期、身份证号等。其中“出生日期”声明为一个“日期”类的内嵌子对象。用成员函数实现对学生信息的录入和显示。要求包括:构造函数和析构函数、拷贝构造函数、组合。【思考题】1C+语言中类和结构体类型有何异同?2什么时候程序会调用其构造函数?3什么时候程序会自
6、动调用析构函数?4什么时候程序会自动调用拷贝构造函数?5类的组合在什么情况下使用?#include#includeclass Accountprivate: char mName20; /银行账户的户名 long mSN; /本账户的帐号 float mBalance; /本账户当前的余额public: Account(char name,long num,float amount); /类的构造函数 Account(); /类的析构函数 void deposit(float amount); /往账户中存款 void withdraw(float amount); /从账户中取款 float
7、 getBalance(); /查询余额;Account:Account(char name,long num,float amount) strcpy(mName,name); mSN=num; mBalance=amount; cout构造函数被调用endl;Account:Account() cout析构函数被调用endl;void Account:deposit(float amount) mBalance+=amount;void Account:withdraw(float amount) mBalance-=amount;float Account:getBalance() re
8、turn(mBalance);void main() /char a20; /long b; /float c; float a1,a2; Account s(abc,123,0); cout请输入存款金额:a1; s.deposit(a1); cout请输入取款金额:a2; s.withdraw(a2); cout卡上余额为:s.getBalance()endl;#include#includeclass Stockpublic: Stock(char a,int b,int c,float d,float e);/获得股票 void increase(int a);/股票增持 void s
9、ale(int a);/卖出股票 void update(float a);/更新股票价格 void display();/显示private: char name20;/股票名称 int num;/股票代码 int number;/股票数量 float price;/每股价格 float sum;/股票总值;/获得股票Stock:Stock(char a,int b,int c,float d,float e) strcpy(name,a); num=b; number=c; price=d; sum=e; cout构造函数被调用endl;/股票增持void Stock:increase(i
10、nt a) number+=a; sum=number*price;/更新股票价格void Stock:update(float a) price=a; sum=number*price;/卖出股票void Stock:sale(int a) number-=a; sum=number*price;/显示void Stock:display() cout股票名称 股票代码 股票数量 每股价格 股票总值endl; coutname num number price sumendl;int main() Stock s(jihb,3435252,3,5.0,15.0); s.display();
11、s.increase(3); s.display(); s.update(15); s.display(); s.sale(1); s.display(); return(0);#include#include#include class fractionpublic : fraction(float x=0,float y=0);/构造函数 fraction(fraction &p);/拷贝构造函数 fraction ();/析构函数 float geta(void);/得到实部的值 float getb(void);/得到虚部的值 void display(void);/显示 fracti
12、on add(fraction& c);/计算复数之和 fraction sub(fraction& c);/计算复数之差 fraction mul(fraction& c);/计算复数之积 fraction div(fraction& c);/计算复数之商private: float a;/实部 float b;/虚部;fraction:fraction(float x,float y) b=y; a=x; cout构造函数被调用endl;fraction:fraction(fraction &p) a=p.a; b=p.b; cout拷贝函数被调用endl;fraction:fractio
13、n() cout析构函数被调用endl;float fraction:geta(void) return(a);float fraction:getb(void) return(b);/显示void fraction:display() couta+bia+c.a; temp.b=this-b+c.b;/ temp.b=b+c.b; return(temp);/复数之差fraction fraction:sub(fraction& c) fraction temp; temp.a=this-a-c.a; temp.b=this-b-c.b; return(temp);/复数之积fraction
14、 fraction:mul(fraction& c) fraction temp; temp.a=this-a*c.a-this-b*c.b; temp.b=this-a*c.b+this-b*c.a; return(temp);/复数之商fraction fraction:div(fraction& c) fraction temp; if(c.a=0&c.b=0) cout输入错误a*c.a+this-b*c.b)/(c.a*c.a+c.b*c.b); temp.b=(this-b*c.a-this-a*c.b)/(c.a*c.a+c.b*c.b); return(temp);int ma
15、in() fraction x(3,4),y(1,2),z; z=x.add(y); z.display(); z=x.sub(y); z.display(); z=x.mul(y); z.display(); z=x.div(y); z.display(); return(0);#include#include#include templateclass fractionpublic : fraction(T x=1,T y=1);/构造函数 fraction(fraction &p);/拷贝构造函数 fraction ();/析构函数 T geta(void);/得到实部的值 T getb
16、(void);/得到虚部的值 void add(fraction c);/计算复数之和 void sub(fraction c);/计算复数之差 void mul(fraction c);/计算复数之积 void div(fraction c);/计算复数之商private: T a;/实部 T b;/虚部;templatefraction :fraction(T x,T y) b=y; a=x; cout构造函数被调用endl;templatefraction:fraction(fraction &p) a=p.a; b=p.b; cout拷贝函数被调用endl;templatefracti
17、on:fraction() cout析构函数被调用endl;templateT fraction:geta(void) return(a);templateT fraction:getb(void) return(b);/复数之和templatevoid fraction:add(fraction c) T a,b; b=this-b+c.getb(); a=this-a+c.geta(); couta+biendl;/复数之差templatevoid fraction:sub(fraction c) T a,b; b=this-b-c.getb(); a=this-a-c.geta(); c
18、outa+biendl;/复数之积templatevoid fraction:mul(fraction c) T a,b; b=this-b*c.geta()+this-a*c.getb(); a=this-a*c.geta()-this-b*c.getb(); couta+biendl;/复数之商templatevoid fraction:div(fraction c) T a,b; if (c.geta()=0&c.getb()=0) cout输入错误b*c.geta()-this-a*c.getb()/(c.geta()*c.geta()+c.getb()*c.getb(); a=(th
19、is-a*c.geta()+this-b*c.getb()/(c.geta()*c.geta()+c.getb()*c.getb(); couta+biendl;int main() fraction x(3,4),y(0,0); x.add(y); x.sub(y); x.mul(y); x.div(y); return(0);#include#includeclass datepublic: date(int a,int b,int c); int year; int month; int day;class Studentpublic: Student(int a,int b,char
20、c,int year,int month,int day,int e);/构造函数 Student(Student &p); /拷贝构造函数 Student();/析构函数 void get();/信息录入 void display(void);/显示private: int num;/学号 int age;/年龄 char sex;/性别 date birth;/年 int s;/身份证号 ;date:date(int a,int b,int c) year=a; month=b; day=c;Student:Student(int a,int b,char c,int year,int m
21、onth,int day,int e):birth(year,month,day) num=a; age=b; sex=c; s=e; cout构造函数被调用endlendl;Student:Student(Student &p):birth(p.birth) num=p.num; age=p.age; sex=p.sex; s=p.s; cout拷贝函数被调用endlendl;Student:Student() cout析构函数被调用endlendl;void Student:get() cout请输入学生信息endl; coutnum; coutage; coutsex; cout出生日期:; cinbirth.yearbirth.monthbirth.day; void Student:display() coutn学生基本信息endl; cout学号:numendl; cout年龄:ageendl; cout性别:sexendl; cout出生日期:birth.year-birth.month-birth.dayendlendl;int main() Student z(345,15,f,1994,8,6,767868); z.display(); z.get(); z.display(); return(0);
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1