第5章实验:类与对象1

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
{
X+=xOffset;
Y+=yOffset;
}
#include<iostream.h>
#include"TPoint.h"
void main()
{
TPoint p1,p2;
p1.SetPoint(3,5);
p2.SetPoint(8,10);//p2.X=8 p2.Y=10
p1.Move(2,1);
}
问题:
⑴、分析友元函数add()的定义、调用与成员函数的区别。
⑵、分析友元类B的成员函数如何引用类A的私有成员的?
⑶、根据运行结果分析下列程序中静态成员B值的变化和静态成员函数的引用方式。
#include<iostream.h>
class M
{
public:
M(int a){A=a;B+=a;}
static void f1(M m);//静态公有成员函数声明
int Xcoord(){return X;}
int Ycoord(){return Y;}
void Move(int xOffset,int yOffset);
private:
int X,Y;
};
void TPoint::SetPoint(int x,int y)
{
X=x;
Y=y;
}
void TPoint::Move(int xOffset,int yOffset)
问题:
⑴、对象p1如何被初始化的?
⑵、改写以上程序通过定义复制构造函数,用对象p1初始化对象p2。
⑶、语句cout<<p2.X;是否正确为什么?
实验十五友元函数与静态成员
【预习内容】
预习友元函数与静态成员的概念。
【实验目的】
1.掌握友元函数的定义、使用方法以及特点。
2.掌握静态成员函数和静态数据成员的功能。
{
cout<<"x="<<a.x<<",y="<<A::y<<endl;
}
void main()
{
A b;
b.Set(5);
cout<<add(b)<<endl;//友元函数的调用
b.Display();
B c(6,9);//a.x=6,X::y=9;
c.Display();
b.Display();
p2.Move(1,-2);//p2.X=9 p2.Y=8
cout<<"x1="<<p1.Xcoord()<<"y1="<<p1.Ycoord()<<endl;
cout<<"x2="<<p2.Xcoord()<<"y2="<<p2.Ycoord()<<endl;
}
问题:
⑴、分析该程序的输出结果,理解类与对象的关系。
{return f1.x+1;}
class B
{wk.baidu.com
public:
B(int i,int j);
void Display();
private:
A a;//A类的对象a作为类B的私有成员
};
int A::y=1;//静态成员必须先赋初值
B::B(int i,int j)
{
a.x=i;
A::y=j;
}
void B::Display()
【实验内容】
设计具有构造函数和析构函数对类中的成员进行初始化和空间释放的程序。
参考程序:
class TPoint
{
public:
TPoint(int x,int y){X=x;Y=y;cout<<"constructor called.\n";}//构造函数
~TPoint(){cout<<"destructor called.\n";}//析构函数
int Xcoord(){return X;}
int Ycoord(){return Y;}
private:
int X,Y;
};
#include<iostream.h>
#include"TPoint.h"
void main()
{
TPoint p1(5,7);
cout<<"p1="<<p1.Xcoord()<<","<<p1.Ycoord()<<endl;
private:
int A;
static int B;//静态私有成员
};
int M::B=0;
void M::f1(M m)//在静态成员函数中对不同类型成员的引用方式
{
cout<<"A="<<m.A<<endl;//引用类的非静态成员,用点域法
cout<<"B="<<B<<endl;//引用类的静态成员,直接引用
⑵、Move()函数的作用是什么?
⑶、该类有四个公有成员函数,其中Xcoord()和Ycoord()定义在类体内,而setPoint()和Move()定义在类体外,理解类体内定义和类体外定义的区别。
实验十四构造函数与析构函数
【预习内容】
预习构造函数与析构函数的概念。
【实验目的】
掌握构造函数和析构函数的特点、功能以及函数的调用方法。
public:
void Set(int i){x=i;}
friend int add(A & f1);//友元函数的声明
void Display()
{
cout<<"x="<<x<<",y="<<y<<endl;
}
private:
int x;
static int y;
};
int add(A & f1)
}
void main()
{
M P(5),Q(10);
M::f1(P);//调用静态成员函数
M::f1(Q);
}
实验十三类和对象定义
【预习内容】
预习C++的类和对象的概念。
【实验目的】
掌握类和对象的概念,熟悉对象中成员概念及访问方法。
【实验内容】
设计点(Tpoint)类的定义程序
参考程序:
将下述关于点类的定义放在TPoint.h文件中。
class TPoint
{
public:
void SetPoint(int x,int y);
【实验内容】
1.设计类A的友元函数、友元类B,分析程序中友元的作用及对类的封装特性的破坏性,理解友元函数的功能。
2.设计一个含有静态成员、静态成员函数的程序,分析程序结果,理解静态成员(函数)与类和对象的关系。
参考程序:
#include<iostream.h>
class A
{
friend class B;//友元类的声明
相关文档
最新文档