>  기사  >  백엔드 개발  >  C++ 친구 함수에 대한 자세한 설명: 친구 함수와 멤버 함수의 차이점은 무엇인가요?

C++ 친구 함수에 대한 자세한 설명: 친구 함수와 멤버 함수의 차이점은 무엇인가요?

王林
王林원래의
2024-04-29 08:27:011077검색

Friend 함수를 사용하면 클래스 정의에서 friend 키워드를 사용하여 선언하여 외부 함수가 클래스의 비공개 또는 보호 멤버에 액세스할 수 있습니다. 멤버 함수와 달리 친구 함수는 클래스 외부에 선언되어 클래스의 비공개 및 보호 멤버에 액세스할 수 있는 반면, 멤버 함수는 클래스 내부에 선언되어 클래스의 모든 멤버에 액세스할 수 있습니다. 프렌드 함수는 일반 함수 호출로 사용되는 반면, 멤버 함수는 클래스 개체로 호출됩니다. 프렌드 함수는 프라이빗 또는 보호 멤버에 대한 외부 액세스가 필요할 때 사용되며, 멤버 함수는 클래스 내부에서 멤버 함수를 사용할 때 사용됩니다.

C++ 友元函数详解:友元函数和成员函数的区别?

C++ 친구 함수에 대한 자세한 설명: 친구 함수와 멤버 함수의 차이점

친구 함수

친구 함수는 외부 함수가 클래스의 비공개 멤버와 보호 멤버에 액세스할 수 있게 해주는 특별한 함수입니다. . 클래스 정의에서 friend 키워드를 사용하여 선언됩니다. friend 关键字声明。

语法:

class MyClass {
  friend void myFriendFunction();
  ...
};

成员函数

成员函数是属于类的函数,可以访问其私有和保护成员。

语法:

class MyClass {
  void myMemberFunction();
  ...
};

友元函数和成员函数的区别

特征 友元函数 成员函数
可访问性 可以访问类的私有和保护成员 可以访问类的所有成员
声明位置 在类外部 在类内部
作用域 全局 类内部
调用方式 像普通函数一样调用 使用类对象调用

实战案例

考虑一个 Student 类,它具有私有的 marks 成员:

class Student {
private:
  int marks;
  ...
};

我们可以使用友元函数 calculateAverage() 来计算学生的平均成绩,该函数可以访问 marks

// 友元函数
friend double calculateAverage(Student& student);

// 计算学生的平均成绩
double calculateAverage(Student& student) {
  return student.marks / 3;
}

我们也可以使用成员函数来计算平均成绩,但它只能在 Student

구문: ​​

// 类的成员函数
double getAverage() {
  return marks / 3;
}
Member Functions

Member 함수는 클래스에 속하고 해당 클래스의 private 및 protected 멤버에 액세스할 수 있는 함수입니다. 🎜🎜문법: 🎜rrreee🎜🎜친구 기능과 멤버 기능의 차이점🎜🎜 범위
기능 친구 기능 멤버 기능
접근성 클래스의 비공개 및 보호 멤버에 액세스할 수 있습니다. 클래스에 액세스할 수 있습니다. 모든 멤버에 접근함
선언 위치 클래스 외부 클래스 내부
전역 내부 클래스
호출 방법 일반 함수처럼 호출 클래스 객체 호출 사용
🎜🎜실용 사례🎜🎜🎜개인 Student 클래스를 고려해보세요. >marks 회원: 🎜rrreee🎜친구 함수 calculateAverage()를 사용하여 marks에 액세스할 수 있는 학생의 평균 성적을 계산할 수 있습니다. 🎜rrreee 🎜 평균 성적을 계산하기 위해 멤버 함수를 사용할 수도 있지만 Student 클래스에서만 사용할 수 있습니다. 🎜rrreee🎜🎜Conclusion🎜🎜🎜Friend 함수는 외부 함수의 액세스를 허용하는 메커니즘을 제공합니다. 클래스의 멤버를 외부 세계에 표시하지 않고 보호했습니다. 멤버 함수는 클래스의 모든 멤버에 액세스할 수 있지만 클래스 내에서만 사용할 수 있습니다. 🎜

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

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