一、实验目的
1. 友元的使用。
2. 理解面向对象程序设计中数组、指针、字符串等相关知识点
3.编程掌握类定义数组,数组类等知识
二、实验任务
(1)查阅资料回答程序中思考题4,思考题11:总结友元函数的使用特点?
(2)查阅资料回答程序中思考题5,思考题9:友元类的特点?
(3)查阅资料回答程序中思考题1~3:总结类内成员函数指针的使用特点?
(4)查阅资料回答程序中思考题6~8:总结类外调用成员函数指针的使用特点?
(5)查阅资料回答程序中思考题10:总结对象数组的初始化特点?
(6)查阅资料回答程序中思考题11~15:总结动态创建对象数组的方法与使用特点?
(7)查阅资料回答程序中思考题16~17:分析动态创建数组类的功能?
#include
#include
#include
using namespace std;
class Point
{
private:
int x, y;
public:
friend class Line; // 声明Line 为Point类的友元类
Point(int xx=0,int yy=0)
{
x = xx; y = yy;
p = &Point::getx;
}
void resetpoint(int xx = 0, int yy = 0)
{
x = xx; y = yy;
cout <<"x="<< (this->*p)() <<endl ;//类内调用,思考3: this代表什么?
类内通过函数指针调用成员函数的特点?this表示被函数指针解引用函数所处的类实例化对象.
p = &Point::gety;//函数指针指向类内成员函数
cout << "y="<<(this->*p)()<<endl;//类内调用
}
void output()
{
cout<<"x:"<<x <<",y:"<<y<<endl;
}
int getx()//函数返回值为整形,形参个数为0
{
return x;
}
int gety()//函数返回值为整形,形参个数为0
{
return y;
}
friend int Distance(Point& a, Point& b); // 声明Distance为Point类的友元函数
};
{
return (sqrt((a.x - b.x) * (a.x - b.x) + (a.y - b.y) * (a.y - b.y)));
}
类做友元时,友元类的成员函数都可以访问该类的私有数据.
{
private:
Point a, b;
public:
void set(int x1, int y1, int x2, int y2)
{ //Point的友元类中的成员函数可以访问其私有数据
a.x = x1; a.y = y1; b.x = x2; b.y = y2;