c++ class類(lèi)友元函數(shù)怎么用

c++
小樊
81
2024-09-24 23:38:15

在C++中,類(lèi)友元函數(shù)是一種特殊的函數(shù),它可以訪問(wèn)類(lèi)的私有和保護(hù)成員。友元函數(shù)不是類(lèi)的成員函數(shù),因此它不受類(lèi)的訪問(wèn)控制規(guī)則的限制。

要聲明一個(gè)友元函數(shù),可以在類(lèi)定義中使用friend關(guān)鍵字。例如:

class MyClass {
    private:
        int privateVar;
    protected:
        int protectedVar;
    public:
        MyClass(int var) : privateVar(var), protectedVar(var) {}
        friend void accessPrivateMembers(MyClass& obj);
};

void accessPrivateMembers(MyClass& obj) {
    std::cout << "Private variable: " << obj.privateVar << std::endl;
    std::cout << "Protected variable: " << obj.protectedVar << std::endl;
}

在上面的示例中,accessPrivateMembers函數(shù)被聲明為MyClass類(lèi)的友元函數(shù)。它可以訪問(wèn)MyClass類(lèi)的私有成員privateVar和保護(hù)成員protectedVar。

要調(diào)用友元函數(shù),可以使用類(lèi)對(duì)象作為參數(shù)。例如:

int main() {
    MyClass obj(10);
    accessPrivateMembers(obj);
    return 0;
}

輸出結(jié)果為:

Private variable: 10
Protected variable: 10

需要注意的是,友元函數(shù)不是類(lèi)的成員函數(shù),因此它不受類(lèi)的訪問(wèn)控制規(guī)則的限制。但是,友元函數(shù)也不能訪問(wèn)類(lèi)的私有和保護(hù)構(gòu)造函數(shù)和析構(gòu)函數(shù)。

0