C++友元函數(shù)如何處理靜態(tài)成員

c++
小樊
81
2024-11-09 01:09:27
欄目: 編程語言

在C++中,友元函數(shù)(friend function)可以訪問類的私有(private)和保護(hù)(protected)成員。但是,對(duì)于靜態(tài)成員,友元函數(shù)的訪問權(quán)限與普通成員函數(shù)相同,因?yàn)殪o態(tài)成員屬于類本身,而不是類的實(shí)例。

以下是一個(gè)示例,展示了如何在友元函數(shù)中處理靜態(tài)成員:

#include <iostream>

class MyClass {
public:
    static int staticMember;

    MyClass() {
        std::cout << "MyClass constructor called" << std::endl;
    }

    ~MyClass() {
        std::cout << "MyClass destructor called" << std::endl;
    }

    friend void accessStaticMember(MyClass &obj);
};

int MyClass::staticMember = 10;

void accessStaticMember(MyClass &obj) {
    std::cout << "Accessing static member: " << MyClass::staticMember << std::endl;
}

int main() {
    MyClass obj;
    accessStaticMember(obj);
    return 0;
}

在這個(gè)示例中,我們定義了一個(gè)名為MyClass的類,其中包含一個(gè)靜態(tài)成員staticMember。我們還定義了一個(gè)友元函數(shù)accessStaticMember,它可以訪問MyClass的靜態(tài)成員。

main函數(shù)中,我們創(chuàng)建了一個(gè)MyClass對(duì)象obj,然后調(diào)用accessStaticMember函數(shù)來訪問靜態(tài)成員。輸出結(jié)果如下:

MyClass constructor called
Accessing static member: 10
MyClass destructor called

這表明友元函數(shù)可以像普通成員函數(shù)一樣訪問靜態(tài)成員。

0