一、实验目的和要求 1.理解掌握this指针的作用和用法; 2.理解掌握构造函数的定义和作用; 3.掌握构造函数的使用; 4.理解掌握拷贝构造函数的定义和使用; 5.理解掌握构造函数的重载; 6.理解掌握析构函数的定义和使用。 |
二、实验环境(软、硬件及条件) 一台安装有Visual C++ 6.0的计算机 |
三、实验步骤 1.阅读下面的程序,回答程序后面的问题。 #include <iostream.h> class CPoint { 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<<"x="<<x<<",y="<<y<<endl; } void main() { CPoint pt; pt.Set(10,20); pt.Print(); } 问题1:该程序的运行结果是 x=-858993460,y=-858993460 问题2: 若将成员函数void Set(int x,int y);的定义修改如下: void CPoint::Set(int x,int y) { this->x = x; this->y = y; } 修改后的运行结果是
2.阅读下面的程序,找出其中的错误,请在不改变主函数内容的前提下修改该程序使之运行正常。 #include <iostream.h> class CPerson { public: void Print(); private: CPerson(); private: int age; char *name; }; CPerson::CPerson() { } void CPerson::Print() { cout<<"name="<<name<<",age="<<age<<endl; }
void main() { CPerson ps(23,"张三"); ps.Print(); } 3.试设计一个CPoint类,满足以下要求: (1)该类包含两个整型成员变量x(横坐标)和y(纵坐标),以及一个输出函数Print()用来输出横坐标和纵坐标,要求不可以在类的外部直接访问成员变量; (2)可以采用没有参数的构造函数初始化对象,此时的成员变量采用默认值0; (3)可以采用直接输入参数的方式来初始化该类的成员变量; (4)可以采用其它的CPoint对象来初始化该类的成员变量; (5)设计一个主函数来测试以上功能。 |
四、实验中遇到的问题及解决
|
五、实验结果及分析 1.问题1:x=-858993460,y=-858993460 问题2: x=10,y=20 2. #include <iostream.h> class CPerson { public: void Print(); CPerson(int x,char*p); private: int age; char *name; }; CPerson::CPerson(int x,char *p) {age=x; name=p; } void CPerson::Print() { cout<<"name="<<name<<",age="<<age<<endl; } void main() { CPerson ps(23,"张三"); ps.Print(); } 3. #include<iostream.h> class CPoint { private: int x, y; public: CPoint(){x=0,y=0;}; CPoint(int x1,int y1){x=x1,y=y1;}; modify(int x2,int y2){x=x2,y=y2;}; void Print(){cout<<"初始化后的坐标为:("<<x<<","<<y<<")"<<endl;}; }; void main() { CPoint a,b(8,9); a.Print(); b.Print(); a.modify(9,8); a.Print(); } |