friend之友元函数和友元类
生活随笔
收集整理的這篇文章主要介紹了
friend之友元函数和友元类
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
// friend_func.cpp : Defines the entry point for the console application.
寫一個函數求兩個點的中點
//友元函數可以訪問類的私有成員,但友元函數不是類的成員函數
/*#include "stdafx.h"
#include <iostream>
#include<stdlib.h>
using namespace std;class Point
{friend Point middle(const Point& p1, const Point &p2);public:Point(float a,float b);~Point();void print(){cout << "x= " << x << ", y= " << y << endl;}float get_X(){return x;}float get_Y(){return y;}
private:float x, y;
};Point::Point(float a, float b):x(a),y(b)
{
}Point::~Point()
{
}
Point middle(const Point& p1, const Point &p2)
{Point mid_point((p1.x + p2.x) / 2, (p1.y+ p2.y) / 2);//訪問私有成員,不被允許return mid_point;
}
int main()
{Point p(1, 3);Point q(1, 5);middle(p, q).print();system("pause");return 0;
}*/
//友元類
#include "stdafx.h"
#include <iostream>
#include<stdlib.h>
using namespace std;class Circle;//前向聲明,表示有一個類為Circle,但此時編譯器并不知道該類的具體聲明和實現
class Point
{
public:Point();Point(float a, float b);~Point();void print()const;friend class Circle;//聲明友元類,Circle類中的所有函數均可以訪問私有變量x,y//友元函數不受訪問屬性限制,因此無論放在public和private中均可以friend const Point middle(const Point& u, const Point& v);//聲明友元函數private:float x, y;
};Point::Point() :x(0), y(0)
{cout << "Default Constructor is called!";
}
Point::Point(float a, float b) :x(a), y(b)
{
}
Point::~Point()
{
}
//middle是友元函數,不是成員函數
const Point middle(const Point& u, const Point& v)
{Point mid_point((u.x+v.x)/2.0,(u.y+v.y)/2.0);return mid_point;
}
void Point::print()const
{cout << "(" << x << " , " << y <<")"<< endl;
}
//###############################################################
class Circle
{
public:Circle();~Circle();Circle& move(float a, float b);void print() const ;private:float radius;Point center;
};Circle::Circle():radius(0.0f)
{center.x = 0.0f;center.y = 0.0f;
}Circle::~Circle()
{
}
Circle& Circle::move(float a, float b)
{center.x += a;center.y += b;return *this;
}
void Circle::print()const
{center.print();//打印圓心,Center是point類cout << "radius = " << radius << endl;
}int main()
{Point p1(1.0, 2.0);Point p2(3.0, 4.0);cout << "第一個點:";p1.print();cout << "第二個點:";p2.print();cout << "兩個點的中點是:";middle(p1, p2).print();Circle c;c.print();cout << "移動圓心: ";c.move(10.0, 10.0);c.print();system("pause");return 0;
}
總結
以上是生活随笔為你收集整理的friend之友元函数和友元类的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于word中公式和图片对齐的简易设置
- 下一篇: C++中类的组合和继承关系