C++面向对象程序设计实验指导书 实验三
实验三 类和对象(一)
3.1 实验目的
1.类的定义; 2.类对象的使用;
3.类成员变量的定义和使用; 4.类成员函数的定义和使用; 5.理解类的作用域; 6.理解类的声明;
7.理解类中private和public权限的声明依据。
3.2 实验内容 3.2.1程序阅读
1.理解下面的程序,并在VC++6.0下运行查看结果,回答程序后面的问题。
#include
void Set(int m, int d, int y ) { month = m ; day = d ; year = y ; }
int IsLeapYear() { return (year%4 == 0 && year0 != 0)||(year@0 == 0); } public:
void Print() { cout< int month; int day; int year; }; 8 C++面向对象程序设计实验指导书 实验三 void main() { CDate a; -----------------------------------------------------① a.Set(10,15,2007) ; a.Print(); } 问题一:以上程序编译能通过吗,为什么,应该如何改正? 答: 问题二:类CDate中分别有哪些成员函数和成员变量,它们分别属于哪种访问权限? 答: 问题三:①处语句的意思是什么? 答: 2.理解下面的程序,并在VC++6.0下运行查看结果,回答程序后面的问题。 #include 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< int month; //成员变量 int day; int year; }; void main() 9 C++面向对象程序设计实验指导书 实验三 { CDate a; a.Set(10,15,2007) ; a.Print(); } 问题一:①处是在给成员变量赋值,还是在给全局变量赋值,如果去掉域作用符::,程序是否还能正确运行? 答: 问题二:②处调用的哪个函数,如果去掉域作用符::,程序是否还能正确运行? 答: 问题三:该程序的输出结果是什么,试解释该输出结果。 答: 3.2.2 程序设计 1.需要求3 个长方柱的体积,请编一个基于对象的程序。数据成员包括length(长)、width (宽) 、height (高)。要求用成员函数实现以下功能 ① 由键盘分别输入3 个长方柱的长、宽、高: ② 计算长方柱的体积: ③ 输出3 个长方柱的体积。 编程序,上机调试并运行。本题是< 4.3思考题 1.试设计一个复数类,该类有实部和虚部两个成员数据,成员数据采用私有访问权限,同时该类有两个共有成员函数,分别用来设置成员数据和输出成员数据,在主函数中分别采用对象方式,指针方式和引用方式来调用该类的公有函数设置和输出成员数据。 10 C++面向对象程序设计实验指导书 实验四 实验四 类和对象(二) 4.1 实验目的 1.理解掌握this指针的作用和用法; 2.理解掌握构造函数的定义和作用; 3.掌握构造函数的使用; 4.理解掌握拷贝构造函数的定义和使用; 5.理解掌握构造函数的重载; 6.理解掌握析构函数的定义和使用。 4.2 实验内容 4.2.1程序阅读 1.理解下面的程序,并在VC++6.0下运行查看结果,回答程序后面的问题。 #include public: void Set(int x,int y); void Print(); private: int x; int y; }; void CPoint::Set(int x,int y) { x = x; y = y; } void CPoint::Print() { cout<<\} void main() 11 C++面向对象程序设计实验指导书 实验四 { } CPoint pt; pt.Set(10,20); pt.Print(); 问题一:以上程序编译能通过吗,试解释该程序? 答: 问题二:以上程序的运行结构是否正确,如果不正确,试分析为什么,应该如何改正? 答: 2.理解下面的程序,并在VC++6.0下运行查看结果,回答程序后面的问题。 #include public: void Print(); private: CPerson(); private: int age; char *name; }; CPerson::CPerson() { } void CPerson::Print() { cout<<\} void main() { CPerson ps(23,\张三\ ps.Print(); } 问题一:以上程序存在三处大错误,在不改变主函数内容的前提下,试改正该程序。 答: 4.2.2 程序设计 1.设计实现一个CPoint类,满足以下要求: 12