一、实验目的和要求 1.类的定义; 2.对象的定义和使用; 3.成员变量和成员函数的定义和使用; |
二、实验环境(软、硬件及条件) 一台安装有Visual C++ 6.0的计算机 |
三、实验步骤 1.阅读下面的程序,回答程序后面的问题。 #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 main() { CDate a; a.Set(10,15,2007) ; a.Print(); } 问题1:找出上述程序中的错误及发生错误的原因,然后改正。 问题2:类CDate中分别有哪些成员函数和成员变量,它们分别属于哪种访问权限? 2.阅读下面的程序,回答程序后面的问题。 #include <iostream.h> int month;//全局变量 int day; int year; void Set(int m,int d,int y) { ::month=m; //---------------------------------------------------① ::day=d; ::year=y; } class CDate { public: void Set(int m,int d,int y) { ::Set(m,d,y); //-----------------------------------------------------② } void Print() { cout<<month<<"/"<<day<<"/"<<year<<endl; } private: int month; //成员变量 int day; int year; };
void main() { CDate a; a.Set(3,15,2016) ; a.Print(); } 问题1:该程序的运行结果是 问题2:①处是在给成员变量赋值,还是在给全局变量赋值,如果去掉域作用符::,程序是否还能正确运行? 问题3:②处调用的哪个函数,如果去掉域作用符::,程序能否正确运行?为什么? 3.试设计一个复数类,该类有实部和虚部两个成员数据,成员数据采用私有访问权限,同时该类有两个公有成员函数,分别用来设置成员数据和输出成员数据,在主函数中调用该类的公有函数设置和输出成员数据。 4. 用面向对象的方法编程求5! |
四、实验中遇到的问题及解决
|
五、实验结果及分析 1.(1),Set函数没有声明,默认为私有,而主函数访问私有成员函数,这是不允许的。改正:在Set函数前声明public. (2)成员函数: void Set(int m, int d, int y ),int IsLeapYear(),void Print();(公有) 成员变量: int month; int day; int year;(私有) 2.(1)-858993460/-858993460/-858993460 (2)给全局变量赋值。能正确运行。 (3)调用Set函数。不能正确运行,因为这是给成员函数的形参初始化,若是去掉作用域::,则是调用函数。与程序要求的不相符。 3. #include<iostream> using namespace std; class Fushu {private: int a;int b; public: void display(int x,int y){a=x,b=y;} int play(){cout<<" "<<a<<"+"<<""<<b<<"i"<<endl;return 0;} }; void main() { Fushu f; f.display(4,5); f.play(); } 4. #include<iostream.h> class J { public: int n; int result(); }; int J::result() { int i = 1,m = 1; for(;i<n+1;i++) m=m*i; return m; } void main() { J temp; temp.n = 5; cout<<"5!="<<temp.result()<<endl; }
|
C++实验3_1 类和对象(1)
最新推荐文章于 2022-12-30 11:32:23 发布