📜  C ++ |朋友关键字|问题1(1)

📅  最后修改于: 2023-12-03 14:59:36.723000             🧑  作者: Mango

问题1:C++中的友元关键字

介绍友元关键字

在C++中,我们可以使用友元关键字来定义友元函数或友元类。定义为友元的函数或类可以访问该类的私有成员和保护成员。

友元函数

友元函数是在类中声明且在类外实现的函数。在声明函数时,可以在前面加上 friend 关键字,将其定义为友元函数。例如:

class MyClass {
    int privateVar;
    friend void friendFunction(MyClass obj);
    public:
        MyClass(int var) : privateVar(var){}
};

void friendFunction(MyClass obj) {
    std::cout << "The privateVar value of MyClass object is: " << obj.privateVar << std::endl;
}

这样, friendFunction 就可以访问 privateVar

友元类

友元类是一个类,可以访问另一个类的私有成员和保护成员。要将一个类定义为另一个类的友元类,需要在该类的声明中声明为友元类。例如:

class MyClass {
    int privateVar;
    friend class FriendClass;
    public:
        MyClass(int var) : privateVar(var){}
};

class FriendClass {
    public:
        void printPrivateVar(MyClass obj) {
            std::cout << "The privateVar value of MyClass object is: " << obj.privateVar << std::endl;
        }
};

在上述代码中, FriendClass 被声明为 MyClass 的友元类。因此,FriendClass 中的 printPrivateVar 函数可以访问 MyClass 中的 privateVar 成员变量。

总结

友元关键字在C++中是非常强大的。通过将函数和类定义为友元,我们可以访问类的私有和保护成员。但是,滥用友元关键字可能会破坏类的封装性,从而导致不必要的安全问题。因此,我们应该谨慎使用友元关键字。