c++友元

友元函数

#include 
#include 

using namespace std;

class Point{
    private:
        int m_x;
        int m_y;
    public:
        Point(int x, int y) {
            m_x = x;
            m_x = y;
        }
        int getX() {
            return m_x;
        }
        int getY() {
            return m_y;
        }
        // 声明getDistance2是类Point的友元函数,因此在getDistance2里可以直接通过对象访问其私有成员变量
        friend void getDistance2(Point& p1, Point& p2);
};

void getDistance(Point& p1, Point& p2) {
    double dis;
    int x_dis = p1.getX() - p2.getX();
    int y_dis = p2.getY() - p2.getY();
    dis = sqrt(x_dis * x_dis + y_dis * y_dis);
    cout<<"getDistance dis = "<#include 
#include 

using namespace std;

class Point;

class PointManager {
    public:
        void getDistance(Point& p1, Point& p2);
};

class Point{
    private:
        int m_x;
        int m_y;
    public:
        Point(int x, int y) {
            m_x = x;
            m_x = y;
        }
        int getX() {
            return m_x;
        }
        int getY() {
            return m_y;
        }
        friend void PointManager::getDistance(Point& p1, Point& p2);
};

void PointManager::getDistance(Point& p1, Point& p2) {
    double dis;
    int x_dis = p1.m_x - p2.m_x;
    int y_dis = p2.m_y - p2.m_y;
    dis = sqrt(x_dis * x_dis + y_dis * y_dis);
    cout<<"getDistance dis = "<

友元类

#include 

using namespace std;

class ClassA {
    private:
        int m_a;
    public:
        ClassA(int a) {
            m_a = a;
        }
        friend class ClassB; //声明ClassB为当前类的友元类后,在ClassB中就可以通过ClassA的对象,直接访问其私有成员
};

class ClassB {
    private:
        int m_b;
    public:
        ClassB(int b) {
            m_b = b;
        }
        void printB() {
            ClassA clazzA(22);
            cout << "m_b = " << m_b << "  clazzA.m_a = "<

你可能感兴趣的:(c++友元)