zoukankan      html  css  js  c++  java
  • C++ 友元

    友元分友元函数、友元类。

    友元函数:一个类的友元函数可以访问该类的私有成员

    我们可以将一个类的成员函数(包括构造、析构函数)作为另一个类的友元函数。如下

    class CCar; // 提前声明CCar 类,以便后面的CDriver类使用
    class CDriver {
    public:
        void ModifyCar(CCar *pCar); // 改装汽车
    };
    
    class CCar {
    private:
        int price;
        
        friend int MostExpensiveCar(CCar cars[], int total); // 声明为友元
        friend void CDriver::ModifyCar(CCar *pCar); // 声明友元
    };
    
    void CDriver::ModifyCar(CCar *pCar)
    {
        pCar->price += 1000;
    }
    
    int MostExpensiveCar(CCar cars[], int total)
    {
        int tmpMax = -1;
    
        for (int i = 0; i < total; ++i)
        {
            if (cars[i].price > tmpMax)
            {
                tmpMax = cars[i].price;
            }
        }
    
        return tmpMax;
    }
    
    int main()
    {
        return 0;
    }

    友元类

    A是B的友元类,则A的成员函数可以访问B的私有成员。

    注意:友元类之间的关系不能传递,不能继承。

    如下代码

    class CCar {
    private:
        int price;
    
        friend class CDriver; // 声明CDriver 为友元类
    };
    
    class CDriver {
    public:
        CCar myCar;
    
        void ModifyCar() { // 改装汽车
            myCar.price += 1000;
        }
    };
    
    int main() {return 0;}
  • 相关阅读:
    vue2 生命周期
    javascript http库axios
    vue2自定义事件之$emit
    php配置rewrite模块
    php 正则匹配中文(转)
    php常用自定义函数
    Mysql----MySQL的mysql_insert_id和LAST_INSERT_ID(转)
    Mysql----mysql启动服务时提示"服务名无效"
    div+css布局
    php常见问题以及解决方法
  • 原文地址:https://www.cnblogs.com/aqing1987/p/4276060.html
Copyright © 2011-2022 走看看