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


    #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;
    }

  • 相关阅读:
    图书管理系统(spring springmvc)
    ssm框架整合(java个人博客系统)
    HTTP笔记
    (数据结构课程设计)稀疏矩阵运算器
    数据库学习笔记
    HTML5 3D旋转图片相册
    Mybatis分页插件-PageHelper的使用
    如何更改github工程的语言属性
    HttpServletResponse和HttpServletRequest详解
    node js 安装.node-gyp/8.9.4 权限 无法访问
  • 原文地址:https://www.cnblogs.com/w413133157/p/1654355.html
Copyright © 2011-2022 走看看