• c++-友元函数和友元类


    友元函数

    • 友元函数和友元类(破坏类的封装性)
    • 面向对象编程思想
    #define _CRT_SECURE_NO_WARNINGS
    #include <iostream>
    #include <cmath>
    
    
    using namespace std;
    
    class Point;
    
    class PointManager {
    public:
    	double PointDistance(Point &p1, Point &p2);
    };
    
    class Point
    {
    
    public:
    	//声明全局函数 PointDistance 是我类Point类的一个友元函数。
    	//friend double PointDistance(Point &p1, Point &p2);
    	friend double PointManager::PointDistance(Point &p1, Point &p2);
    
    	Point(int x, int y) {
    		this->x = x;
    		this->y = y;
    	}
    
    
    	int getX()
    	{
    		return this->x;
    	}
    
    	int getY()
    	{
    		return this->y;
    	}
    private:
    	int x;
    	int y;
    
    };
    
    double PointManager::PointDistance(Point &p1, Point &p2)
    {
    	double dis;
    	int dd_x = p1.x - p2.x;
    	int dd_y = p1.y - p2.y;
    
    	dis = sqrt(dd_x*dd_x + dd_y *dd_y);
    
    	return dis;
    }
    
    # if 0
    double PointDistance(Point &p1, Point &p2)
    {
    	double dis;
    	int dd_x = p1.x - p2.x;
    	int dd_y = p1.y - p2.y;
    
    	dis = sqrt(dd_x*dd_x + dd_y *dd_y);
    
    	return dis;
    }
    #endif
    
    
    
    int main(void)
    {
    	
    	Point p1(1, 2);
    	Point p2(2, 2);
    
    	//cout << PointDistance(p1, p2) << endl;
    
    	PointManager pm;
    	cout << pm.PointDistance(p1, p2) << endl;
    
    	return 0;
    }
    

    友元类

    #define _CRT_SECURE_NO_WARNINGS
    #include <iostream>
    
    using namespace std;
    
    class A 
    {
    public:
    
    	A(int a)
    	{
    		this->a = a;
    	}
    
    	void printA() {
    		cout << "a = " << this->a << endl;
    		// B objB(3000);
    		// cout << objB.b << endl;
    	}
    
    	//声明一个友元类B
    	friend class B;
    private:
    	int a;
    };
    
    
    class B
    {
    public:
    	B(int b)
    	{
    		this->b = b;
    	}
    	void printB() {
    		A objA(100);
    		cout << objA.a << endl;
    		cout << "b = " << this->b << endl;
    	}
    	friend class A;
    private:
    	int b;
    };
    
    int main(void)
    {
    	B bObj(200);
    
    	bObj.printB();
    	
    	return 0;
    }
    
  • 相关阅读:
    IfcQuantityWeight
    IfcPhysicalComplexQuantity
    IfcBinary
    大服务器
    DFF环境配置
    Java程序设置为开机自启动
    IfcArbitraryProfileDefWithVoids
    定位日志
    blazor相关资料
    老人与海 电影
  • 原文地址:https://www.cnblogs.com/ygjzs/p/12076771.html
Copyright © 2020-2023  润新知