zoukankan      html  css  js  c++  java
  • 关于C++中友元类和友元函数的示例讲解

    来自:

    http://blog.csdn.net/wbj1234566/article/details/2256642

    简单的讲 :把类外部的类或函数声明为友元类和友元函数,使其能直接访问类中的私有成员。

    格式: friend  类 或 函数 声明

    //此语句可以放在类中的任意位置,与访问权限保留字无关。

    需要注意几个方面:

    1.友元关系是不可以传递的。

     比方说你是我的友元而Joe是你的友元,但这并不意味着Joe是我的友元。

    2.友元关系不能继承。

    3.友元关系不是互通。

    把class A设置为class B的友元并不会使得class B成为class A的友元,也许你愿意把你的秘密告诉我,但是,这并不意味着我愿意把我的秘密告诉你。

    具体的用法详细见下面的示例:

     

    #include <cstdlib>
    #include <iostream>

    using namespace std;

    class Radius
    {
        friend 
    class Circle;                  //声明Circle为Radius的友元类
        friend void Show_r(Radius &n);           //声明Show_r为友元函数
        public:
            Radius(
    int x)
            
    {
                r 
    = x;
            }

            
    ~Radius()
            
    {
            }

        
    private:
            
    int r;
    }
    ;

    void Show_r(Radius &n)
    {
        cout
    <<"圆的半径为: "<<n.r<<endl;          //调用Radius对象的私有成员变量r
    }


    class Circle
    {
        
    public:
            Circle()
            
    {
            }

            
    ~Circle()
            
    {
            }

            
    double area(Radius a)
            
    {
                s 
    = a.r * a.r * 3.1415926;  //调用Radius对象的私有成员变量r
                return s;
            }

        
    private:
            
    double s;
    }
    ;

    int main(int argc, char *argv[])
    {
        Radius objRadius(
    9);
        Circle objCircle;
        
        Show_r(objRadius);
        cout
    <<"面积为:"<<objCircle.area(objRadius)<<endl;
        
        system(
    "PAUSE");
        
    return EXIT_SUCCESS;
    }

  • 相关阅读:
    Objective-c Category(类别)
    协议(porotocol)
    类的通用格式
    objective-c 强大的布尔类型
    C 语言函数指针
    c while 循环
    jQuery的deferred对象详解
    exploring the http Object
    div+css定位position详解
    如何给变量取个简短且无歧义的名字
  • 原文地址:https://www.cnblogs.com/cy568searchx/p/2718547.html
Copyright © 2011-2022 走看看