38友元

简介: 38友元

C++入门——60s从0到1

友元

 

在C++中,友元是一种特殊的机制,它允许一个类或函数访问另一个类中的私有成员。友元可以公开一个类的接口,以便其他代码可以访问类的私有成员。

 

友元的概念

 

友元是一种特殊的机制,它允许一个类或函数访问另一个类中的私有成员。在C++中,类中的私有成员默认是只允许在类的内部访问的。如果其他代码需要访问这些成员,可以通过将它们声明为友元来实现。友元可以公开一个类的接口,以便其他代码可以访问类的私有成员。

 

友元的声明

 

在C++中,友元可以在类定义中进行声明。语法如下:

 

class MyClass {

   friend class OtherClass; // 声明 OtherClass 为 MyClass 的友元类

   friend void foo(); // 声明 foo() 为 MyClass 的友元函数

   int x, y; // 其他成员变量和函数...

};

 

在此示例中,声明了一个友元类`OtherClass`和一个友元函数`foo()`。这些友元类和友元函数可以访问`MyClass`中的私有成员。

 

友元的使用

 

友元可以用于访问类的私有成员,它们通常被用于以下场景:

 

1. 访问私有成员:通过将其他代码声明为友元,可以使其访问类的私有成员。这可以帮助我们更好地封装代码,同时提供必要的接口以供其他代码使用。

 

2. 提供接口:通过将其他代码声明为友元,可以为其提供访问类接口的权限。这可以帮助我们更好地封装代码,并提供必要的接口以供其他代码使用。

 

3. 实现特定的操作:通过将其他代码声明为友元,可以为它们提供对特定操作的权限。这可以帮助我们更好地封装代码,并提供特定的功能以供其他代码使用。

 

友元函数的使用

 

友元函数是一种特殊的函数,它可以访问类的私有成员。通常情况下,我们需要在类外部定义一个函数来实现特定的操作,并将该函数声明为该类的友元函数。下面是一个示例:

 

class MyClass {
private:
    int x, y; // 私有成员变量
public:
    void print() {
        cout << "x = " << x << ", y = " << y << endl;
    }
    friend void print(MyClass&); // 将 print() 声明为 MyClass 的友元函数
};
 
void print(MyClass& obj) { // 在函数定义中可以直接访问类的私有成员
    cout << "x = " << obj.x << ", y = " << obj.y << endl;
}

 

在此示例中,我们在类`MyClass`中定义了一个私有成员变量`x`和`y`,并将其公开在一个名为`print()`的公有成员函数中。我们还定义了一个名为`print()`的友元函数,它接受一个`MyClass`类型的参数对象,并在控制台输出该对象的私有成员变量值。最后我们在主函数中创建了一个`MyClass`类型的对象并调用了它的`print()`函数。

 

友元类的使用

 

友元类是一种特殊的类类型,它可以访问另一个类的所有成员(包括私有成员)。通常情况下,我们需要定义一个类来实现特定的操作,并将该类声明为另一个类的友元类。下面是一个示例:

 

class MyClass {
private:
    int x, y; // 私有成员变量
public:
    void print() { // 其他公有成员函数...
        cout << "x = " << x << ", y = " << y << endl;
    }
    friend class OtherClass; // 将 OtherClass 声明为 MyClass 的友元类
};
 
class OtherClass { // OtherClass 是 MyClass 的友元类类型
public: // OtherClass 的公有成员函数...
    void doSomething(MyClass& obj) { // 在 OtherClass 中可以直接访问 MyClass 的私有成员变量和公有成员函数
        obj.x = 10; obj.y = 20; obj.print(); // 对 MyClass 的私有成员进行赋值并调用公有成员函数 print()
    }   
};

在此示例中,我们在`MyClass`中定义了两个私有成员变量和一个名为`print()`的公有成员函数。我们还定义了一个名为`OtherClass`的友元类类型,并在其中定义了一个名为`doSomething()`的公有成员函数。该函数接受一个指向`MyClass`类型的参数对象的对象引用,并在控制台中对参数对象的私有成员进行赋值并调用公有成员函数`print()`来输出结果。最后我们在主函数中创建了一个`MyClass`类型的对象和一个`OtherClass`类型的对象并调用了它们的相应函数来测试结果。

目录
相关文章
|
程序员 C++
29 C++ - 友元
29 C++ - 友元
50 0
|
5月前
|
C++
C++友元函数和友元类的使用
C++中的友元(friend)是一种机制,允许类或函数访问其他类的私有成员,以实现数据共享或特殊功能。友元分为两类:类友元和函数友元。类友元允许一个类访问另一个类的私有数据,而函数友元是非成员函数,可以直接访问类的私有成员。虽然提供了便利,但友元破坏了封装性,应谨慎使用。
|
7月前
|
C++
C++程序中的友元
C++程序中的友元
40 2
|
7月前
|
C++
友元
友元
32 0
|
7月前
|
C++
【c++】友元
【c++】友元
【c++】友元
|
7月前
|
安全 C语言 C++
C++友元
C++友元
75 0
|
C++
C++ 友元
C++ 友元
51 0
静态成员,友元函数,友元类
🐰静态数据成员 🌸静态数据成员的声明: 🌸静态数据成员的初始化: 🌸静态数据成员的访问: 🐰静态成员函数 🌸静态成员函数的声明 🌸静态数据成员函数的访问 🐰友元函数 友元函数的声明 🐰 友元类