• 类 友元



    #include "stdafx.h"
    #include <iostream.h>

    //向前声明
    class A;

    class B
    {
    public:
        int GetAData( A& obj );
    };

    class A
    {
    public:
        int GetData() const
        {
            return m_i;
        }
        A():m_i(10)
        {
        };

        //friend
    关键字 函数修饰符
        //
    此函数和类A有友员关系(可以访问类A的私有成员)
        friend int GetAData( A& obj );   
        //B
    的成员函数声明为A的友元函数
        friend int B::GetAData( A& obj );
       
        //
    C是类A的友员类
        friend class C;   
    private:   
        int m_i;
    };

    class C
    {
    public:
        int GetAData( A& obj )
        {
            return obj.m_i;
        }
        static int GetADataStatic( A& obj )
        {
            return obj.m_i;
        }
    };

    //
    全局函数
    int GetAData( A& obj )
    {
        return obj.m_i;
    }

    //
    成员函数
    int B::GetAData( A& obj )
    {
        return obj.m_i;
    }

    int main(int argc, char* argv[])
    {
        A theA;
       
        B theB;
       
        C theC;
       
        cout << theA.GetData() << endl;
       
        cout << *(int*)&theA << endl;
       
        cout << "
    非成员函数" << GetAData(theA) << endl;
       
        cout << "
    友员成员函数" << theB.GetAData(theA) << endl;
       
        cout << "
    友员类" << theC.GetAData(theA) << endl;
       
        cout << "
    友员类 静态成员函数" << C::GetADataStatic(theA) << endl;
       
        return 0;
    }

  • 相关阅读:
    打开外部程序
    检测是否渲染
    maxsxript 坐标转换 函数
    实用 SQL 语句
    【整理】一些有用的学习资源链接
    关于 static 和 final 的一些理解
    Java8新特性时间日期库
    推荐一套后台管理系统
    Java API 之 Object
    【软件体系结构】架构风格与基于网络应用软件的架构设计
  • 原文地址:https://www.cnblogs.com/w413133157/p/1654355.html
Copyright © 2020-2023  润新知