posts - 311, comments - 0, trackbacks - 0, articles - 0
  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

(地基工)friend classes

Posted on 2011-03-02 15:55 点点滴滴 阅读(3264) 评论(0)  编辑 收藏 引用 所属分类: 02 编程语言
一個 class A 的定義中, 亦可宣告 class B 為其 friend, 如此一來, class B 中的 member function f(A &a) 若 有 引數 為 class A 的物件, 則 於函數 f() 的定義中就可以直接引用 class A 的 private elements。 這好像是 class A 宣告 class B 為其 好朋友, 因此, class B 就可以分享 class A 的資源。 由例 5 來看如何使用 friend class 的功能。

例 5 : friend class

#include <iostream.h>

class A
{
public:
    A(
int r=0){x=r;}
    
~A(){}

    friend 
class B;

private:
    
int x;
};

class B
{
public:
    B(
int r=0){y=r;}
    
~B(){}
    
int g(A &a){ return a.x+y;}
private:
    
int y;
};

main()
{
    A a(
3);
    B b(
12);

    cout
<< "g(3) = "<< b.g(a)<< endl;
}

說明:
  1. 於 class A 中宣告 class B 為其 friend。
  2. class B 的 member function g 可以自由引用 class A 的 private elements, 如 a.x
  3. 該程式的執行結果為 g(3) = 15