温馨提示×

C++友元函数如何处理静态成员

c++
小樊
81
2024-11-09 01:09:27
栏目: 编程语言

在C++中,友元函数(friend function)可以访问类的私有(private)和保护(protected)成员。但是,对于静态成员,友元函数的访问权限与普通成员函数相同,因为静态成员属于类本身,而不是类的实例。

以下是一个示例,展示了如何在友元函数中处理静态成员:

#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;
}

在这个示例中,我们定义了一个名为MyClass的类,其中包含一个静态成员staticMember。我们还定义了一个友元函数accessStaticMember,它可以访问MyClass的静态成员。

main函数中,我们创建了一个MyClass对象obj,然后调用accessStaticMember函数来访问静态成员。输出结果如下:

MyClass constructor called
Accessing static member: 10
MyClass destructor called

这表明友元函数可以像普通成员函数一样访问静态成员。

0