>  기사  >  백엔드 개발  >  C++ 친구 함수에 대한 자세한 설명: 친구 함수와 전역 함수의 차이점은 무엇입니까?

C++ 친구 함수에 대한 자세한 설명: 친구 함수와 전역 함수의 차이점은 무엇입니까?

WBOY
WBOY원래의
2024-04-28 21:42:021159검색

Friend 함수는 클래스의 비공개 및 보호 데이터 멤버에 액세스할 수 있지만 전역 함수는 액세스할 수 없습니다. Friend 함수는 클래스 선언에서 선언되고 전역 함수는 friend 키워드를 사용하여 친구 함수를 선언하고 extern을 사용합니다. 전역 함수를 선언하는 키워드입니다. Friend 함수는 선언을 통해 클래스 멤버 변수에 액세스할 수 있는 권한을 얻습니다. 예를 들어 friend 함수 getPrivateData를 선언하면 MyClass 클래스의 전용 변수 x에 액세스할 수 있습니다.

C++ 友元函数详解:友元函数和全局函数的区别?

C++ 프렌드 함수에 대한 자세한 설명

프렌드 함수와 전역 함수의 차이점

C++에서 프렌드 함수는 클래스 멤버 함수에 선언되어 보호되는 프라이빗 함수에 접근할 수 있는 특수 함수입니다. 데이터 멤버. 이와 대조적으로 전역 함수는 클래스 외부에서 선언되며 비공개 및 보호된 데이터 멤버에 액세스할 수 없습니다.

friend 함수 구문

friend 함수 구문은 다음과 같습니다.

friend 返回类型 函数名(参数列表);

예를 들어 MyClass의 비공개 데이터 멤버에 액세스할 수 있는 friend 함수를 선언합니다. MyClass 中私有数据成员的友元函数:

friend int getPrivateData(MyClass& object);

友元函数和全局函数的区别

友元函数和全局函数的主要区别如下:

  • 访问范围:友元函数可以访问类中的私有和受保护的数据成员,而全局函数不能。
  • 作用域:友元函数可以在类的声明中声明,而全局函数在类外声明。
  • 声明方式:友元函数使用 friend 关键字声明,而全局函数使用 extern 关键字声明。

实战案例

考虑一个包含私有成员变量 xMyClass 类:

class MyClass {
private:
    int x;
public:
    int getX();
    void setX(int value);
};

要访问 MyClass 的私有数据成员 x,我们可以声明一个友元函数:

friend int getPrivateData(MyClass& object) {
    return object.x;
}

使用友元函数

我们可以使用友元函数来访问 MyClass

int main() {
    MyClass object;
    object.setX(10);
    int privateData = getPrivateData(object);
    cout << "Private data: " << privateData << endl;
    return 0;
}

Friend 함수와 전역 함수의 차이점

🎜🎜friend 함수와 전역 함수의 주요 차이점은 다음과 같습니다. 🎜
  • 🎜액세스 범위: 🎜Friend 함수는 클래스의 비공개 및 보호된 데이터 멤버에 액세스할 수 있지만 전역 함수는 기능 기능은 할 수 없습니다.
  • 🎜범위: 🎜Friend 함수는 클래스 선언에서 선언할 수 있지만 전역 함수는 클래스 외부에서 선언합니다.
  • 🎜선언 방법: 🎜Friend 함수는 friend 키워드를 사용하여 선언하고, 전역 함수는 extern 키워드를 사용하여 선언합니다.
🎜🎜실제 사례🎜🎜🎜개인 멤버 변수 x가 포함된 MyClass 클래스를 생각해 보세요. 🎜
Private data: 10
🎜 MyClass의 비공개 데이터 멤버 <code>x, 친구 함수를 선언할 수 있습니다: 🎜rrreee🎜🎜친구 함수 사용🎜🎜🎜친구 함수를 사용하여 MyClass'에 액세스할 수 있습니다. s 개인 데이터 멤버: 🎜rrreee🎜이 코드를 실행하면 다음이 출력됩니다: 🎜rrreee

위 내용은 C++ 친구 함수에 대한 자세한 설명: 친구 함수와 전역 함수의 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.