程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> C/C++:C++友元類

C/C++:C++友元類

編輯:C++入門知識

C/C++:C++友元類



C++友元類:

正常情況下,一個類是訪問不到另一個類的私有成員的。就像下面這個:





#include 

class A{

private:
    int a;

public:
    A(){
        a = 1;
    }

};

class B:public A{

public:
    B(){
        std::cout << a << std::endl;
    }
};

int main()
{
    B p;
    p();
    return 0;
}

這是就會報錯:main.cpp|6|error: 'int A::a' is private| 也就是說a是私有的,B訪問不到。

而這時,我們就要用到友員類的概念了。



#include 

class A{
    friend class B;//指定B為A的友元類。

private:
    int a;

public:
    A(){
        a = 1;
    }

};

class B:public A{

public:
    B(){
        std::cout << a << std::endl;
    }
};

int main()
{
    B p;
    return 0;
}

這時,B就能訪問A的私有成員了。即使B沒有繼承至A,也是能訪問的。就像這樣:



#include 

class A{
    friend class B;//指定B為A的友元類。

private:
    int a;

public:
    A(){
        a = 1;
    }

};

class B{

public:
    B(){
        A a;
        std::cout << a.a << std::endl;
    }
};

int main()
{
    B p;
    return 0;
}


然而實際上,在開發過程中,程序員是很少使用到友元類的,因為它使兩個類直接的關系太過緊密。



PS:初學C++,有什麼不對的地方,一定要告訴我呀_(:з」∠)_。我好糾正學習,也不會誤導人家。。


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved