实验二 类和对象
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
学长只能帮你到这了
要想学习好,努力少不了
int day; int year; }; void main() { CDate a; a.Set(10,15,2007) ; a.Print(); }
问题一:①处是在给成员变量赋值,还是在给全局变量赋值,如果去掉域作用符::,程序是 否还能正确运行? 答: 1 处在给全局变量赋值,如果去掉: :程序能够正确运行,因为最上边没有局部变量的干扰; 问题二:②处调用的哪个函数,如果去掉域作用符::,程序是否还能正确运行? 答:2处调用的是
答: #include<iostream> #include<iomanip> using namespace std;
要想学习好,努力少不了 学长只能帮你到这了
class complex{ private: double real,imag; public: void init(double r,double i) { real=r;imag=i; } double real1(){return real;}; double imag1(){return imag;}; }; void main() { complex m,*p; p=&m; complex &n=m; m.init(8.9,2.4); cout<<"the complex is"<<m.real1()<<"+"<<m.imag1()<<"i"<<endl; cout<<"the complex is"<<p->real1()<<"+"<<p->imag1()<<"i"<<endl; cout<<"the complex is"<<n.real1()<<"+"<<n.imag1()<<"i"<<endl; }
#include<iostream> #include<iomanip> usingΒιβλιοθήκη Baidunamespace std; class Complex{
要想学习好,努力少不了
public: void Init(double x,double y ) { a=x; b=y; } double Real(){return a;}; double Image(){return b;}; private: int a; int b; }; void main() { Complex m; m.Init(3,1); cout<<"The complex is "<<m.Real()<<"+"<<m.Image()<<"i"<<endl; Complex *p=&m; p->Init(3,1); cout<<"The complex is "<<p->Real()<<"+"<<p->Image()<<"i"<<endl; Complex &q=m; q.Init(3,1); cout<<"The complex is "<<q.Real()<<"+"<<q.Image()<<"i"<<endl; }
要想学习好,努力少不了
实验二 类和对象—类的构建
2.1 实验目的
1.类的定义; 2.类对象的使用; 3.类成员变量的定义和使用; 4.类成员函数的定义和使用; 5.理解类的作用域; 6.理解类的声明; 7.理解类中 private 和 public 权限的声明依据。
2.2 实验内容 2.2.1 程序阅读
结果:
学长只能帮你到这了
2.3 思考题(不做)
1.试指出以下程序的错误,并改正之。
#include <iostream.h> class CPoint { public: unsigned x, unsigned y; bool IsInCircle(CCircle *Circle) { return (((x-Circle->Center.x)*(x-Circle->Center.x) +(y-Circle->Center.y)*(y-Circle->Center.y))<=Circle->Radius*Circle->Radius);
学长只能帮你到这了
要想学习好,努力少不了
void main() { CDate a; -----------------------------------------------------① a.Set(10,15,2007) ; a.Print(); }
问题一:以上程序编译能通过吗,为什么,应该如何改正? 答: 不能通过, 因为在类CDate中Set所指的void Set(int m, int d, int y )那段代码没有设置成 public,在外面无法调用;修改只需在void Set(int m, int d, int y )前面加public:变成公
#include <iostream.h> int month;//全局变量 int day; int year; void Set(int m,int d,int y) -----------------------------------------------------a { ::month=m; -----------------------------------------------------① ::day=d; ::year=y; } class CDate { public: void Set(int m,int d,int y) -----------------------------------------------------b { ::Set(m,d,y); -----------------------------------------------------② } void Print() { cout<<::month<<"/"<<::day<<"/"<<::year<<endl; } private: int month; //成员变量
共访问权限的就行了。
问题二:类 CDate 中分别有哪些成员函数和成员变量,它们分别属于哪种访问权限? 答: 类CDate中有Set以及Print 两个成员函数皆属于public访问权限,month
day
year 三个成员变量属于private访问权限。
问题三:①处语句的意思是什么?。 答:a 调用 CDate 类 2.理解下面的程序,并在 VC++6.0 下运行查看结果,回答程序后面的问题。
没有赋值所以为-858993460,应该为全局变量 cout<<::month<<"/"<<::day<<"/"<<::year<<endl;才会出现:
学长只能帮你到这了
2.2.2 程序设计
1.试设计一个复数类,该类有实部和虚部两个成员数据,成员数据采用私有访问权限,同 时该类有两个共有成员函数, 分别用来设置成员数据和输出成员数据, 在主函数中分别采用 对象方式,指针方式和引用方式来调用该类的公有函数设置和输出成员数据。
1.理解下面的程序,并在 VC++6.0 下运行查看结果,回答程序后面的问题。
#include <iostream.h> class CDate { void Set(int m, int d, int y ) { month = m ; day = d ; year = y ; } int IsLeapYear() { return (year%4 == 0 && year%100 != 0)||(year%400 == 0); } public: void Print() { cout<<month<<"/"<<day<<"/"<<year<<endl; } private: int month; int day; int year; };
void Set(int m,int d,int y) { ::month=m; ::day=d; ::year=y; } 如果去掉::程序不能正确运行,因为局部变量中也有Set函数;
问题三:该程序的输出结果是什么,试解释该输出结果。
答:
,
因为 cout<<month<<"/"<<day<<"/"<<year<<endl;中 month day year 都为局部变量,
要想学习好,努力少不了
} }; class CCircle { public: unsigned Radius; CPoint Center; }; void main() { }
学长只能帮你到这了