C++의 Friend 함수 및 예제 사용 사례

게시 됨: 2022-10-22

데이터 은닉은 객체 지향 프로그래밍 언어(OOP)에서 널리 사용되는 기본적인 소프트웨어 개발 기술입니다. 클래스 외부에서 개인 데이터 멤버에 대한 액세스를 제한합니다. 그러나 friend 함수로 알려진 C++ 기능은 데이터 은닉 원칙에 위배됩니다.

이 기사에서는 C++의 friend 함수가 무엇인지, friend 클래스가 무엇인지, 예제를 통해 몇 가지 사용 사례를 살펴봅니다.

경쟁 우위를 확보하려면 무료 기술 과정을 확인하십시오.

목차

C++의 friend 함수는 무엇입니까?

C++의 friend 함수는 클래스 외부에 선언된 함수이지만 클래스의 private 및 protected 멤버에 액세스할 수 있습니다. 특정 클래스의 private 멤버는 비멤버 함수에 액세스할 수 없지만 이를 friend 함수로 선언하면 클래스의 private 및 protected 멤버에 액세스할 수 있습니다.

DevOps에서 upGrad의 고급 인증 확인

Friend 함수의 특징

C++의 friend 함수에는 다음과 같은 특징이 있습니다.

  • friend 함수는 친구로 선언된 클래스의 범위 밖에 있습니다.
  • friend 함수는 클래스의 멤버이거나 클래스 범위 외부에서 선언된 함수일 수 있습니다.
  • 친구 기능은 단일 클래스로 제한되지 않습니다.

인기 있는 소프트웨어 엔지니어링 과정 살펴보기

LJMU 및 IIITB의 컴퓨터 과학 석사 Caltech CTME 사이버 보안 인증 프로그램
전체 스택 개발 부트캠프 블록체인 PG 프로그램
풀 스택 개발의 이그 제 큐 티브 PG 프로그램
아래에서 모든 과정 보기
소프트웨어 공학 과정

  • friend 함수를 호출하는 것은 객체를 사용하지 않고 클래스의 일반 함수를 호출하는 것과 같습니다.
  • 객체가 클래스 범위에 없기 때문에 객체를 사용하여 friend 함수를 호출할 수 없습니다.
  • C++의 Friend 함수에는 개체가 인수로 있습니다.
  • private 또는 public 부분에서 friend 함수를 선언할 수 있습니다.
  • 멤버 이름은 friend 함수에 직접 액세스할 수 없으며 멤버 이름과 함께 점 멤버십 연산자 및 개체 이름을 사용해야 합니다.

사이버 보안에서 upGrad의 고급 인증을 확인하십시오

Friend 함수의 구문

friend 함수를 선언하기 위해 클래스 본문 내에서 friend 키워드를 사용합니다. friend 함수의 구문은 다음과 같습니다.

클래스 클래스 이름 {

… …

친구 returnType functionName(인수 목록);

… …

}

주문형 소프트웨어 개발 기술

자바스크립트 코스 핵심 자바 과정 데이터 구조 과정
Node.js 과정 SQL 과정 전체 스택 개발 과정
NFT 코스 DevOps 과정 빅 데이터 코스
React.js 과정 사이버 보안 과정 클라우드 컴퓨팅 과정
데이터베이스 디자인 과정 파이썬 코스 암호화폐 과정

구문을 분석하면 각 용어의 의미는 다음과 같습니다.

  • friend 는 함수가 friend 함수임을 나타내는 키워드입니다.
  • returnType 은 함수의 반환 유형입니다.
  • functionName 은 클래스의 친구가 된 함수의 이름입니다.
  • arg 목록 은 우리가 전달할 인수입니다.

세계 최고의 대학에서 온라인으로 소프트웨어 개발 과정을 배우십시오. 이그 제 큐 티브 PG 프로그램, 고급 인증 프로그램 또는 석사 프로그램을 획득하여 경력을 빠르게 추적하십시오.

C++ 친구 함수의 예

이제 친구 기능을 설명하는 몇 가지 프로그램을 살펴보겠습니다.

예제 1: 상자의 높이를 출력하는 C++ friend 함수

#include <iostream>

네임스페이스 std 사용

클래스 박스

{

사적인:

정수 높이;

공공의:

상자(): 높이(0) { }

친구 int printHeight(Box); //친구 함수

};

int printHeight(박스 h)

{

높이 += 40;

반환 h. 높이;

}

정수 메인()

{

상자 h;

cout<<"상자의 높이: "<< printHeight(h)<<endl;

반환 0;

}

소프트웨어 개발과 관련된 인기 기사 읽기

Java에서 데이터 추상화를 구현하는 방법은 무엇입니까? Java에서 내부 클래스란 무엇입니까? Java 식별자: 정의, 구문 및 예
예제와 함께 OOPS의 캡슐화 이해하기 C의 명령줄 인수 설명 2022년 클라우드 컴퓨팅의 상위 10가지 기능 및 특성
Java의 다형성: 개념, 유형, 특성 및 예 Java 패키지 및 사용 방법 초보자를 위한 Git 튜토리얼: 처음부터 Git 배우기

산출:

상자 높이:40

예 2: C++ friend 함수가 두 클래스에 친숙한 경우

#include <iostream>

네임스페이스 std 사용

// 포워드 선언

클래스 ClassQ;

클래스 클래스 P {

공공의:

// numP를 12로 초기화하는 생성자

클래스P() : numP(12) {}

사적인:

정수 숫자 P;

// 친구 함수 선언

친구 int add(ClassP, ClassQ);

};

클래스 ClassQ {

공공의:

// numQ를 1로 초기화하는 생성자

클래스Q() : numQ(1) {}

사적인:

정수 numQ;

// 친구 함수 선언

친구 int add(ClassP, ClassQ);

};

// 두 클래스의 멤버에 액세스

int add(ClassP objectP, ClassQ objectQ) {

반환(objectP.numP + objectQ.numQ);

}

정수 메인() {

클래스P 개체P;

클래스Q 객체Q;

cout << "합계: " << add(objectP, objectQ);

반환 0;

}

산출:

합계:13

위의 예에서 클래스 P와 클래스 Q는 두 클래스의 개인 데이터에 대한 액세스를 제공하는 친구 함수로 add() 를 선언했습니다. 또한 클래스 P 내부의 friend 함수는 클래스 Q를 사용하고 있습니다.

따라서 프로그램에서 클래스 Q를 전방 선언합니다.

친구 기능 구현

C++ 의 friend 함수대한 더 나은 아이디어를 얻기 위해 이제 friend 함수를 구현할 수 있는 두 가지 방법을 살펴보겠습니다.

  1. 다른 클래스의 메서드를 통해 C++에서 friend 함수 구현

친구로 선언된 다른 클래스의 private 및 protected 멤버에 액세스해야 할 때 C++에서 friend 클래스를 선언합니다. 다른 클래스의 단일 멤버 함수를 친구로 선언하는 것도 가능합니다.

클래스 class_name

{

친구 클래스 friend_class; // 친구 클래스 선언

};

반 친구_반

{

};

위의 friend 클래스 선언에서 friend_class 의 모든 함수는 class_name 의 friend 함수입니다 .

다음은 다른 클래스의 메서드를 통해 friend 함수를 구현하는 방법을 보여주는 간단한 예입니다.

#include <iostream>

네임스페이스 std 사용

클래스 A

{

정수 p=4;

친구 클래스 B; //친구 클래스

};

클래스 B

{

공공의:

무효 표시(A&a)

{

cout<<"p의 값은 다음과 같습니다." <<ap;

}

};

정수 메인()

{

에이;

ㄴㄴ;

  1. 디스플레이 (a);

반환 0;

}

산출:

p의 값은 4입니다.

  1. 전역 기능 구현

전역 friend 함수를 구현하면 전역 클래스 선언의 모든 protected 및 private 멤버에 액세스할 수 있습니다. 다음은 예입니다.

#include<iostream>

네임스페이스 std 사용

수업 공간

{

정수

정수 b;

정수 c;

공공의:

무효 세트 데이터 (int x, int y, int z);

무효 표시(무효);

친구 무효 연산자-(공백 &s);

};

공백 공간 :: setdata (int x, int y, int z)

{

a=x; b=y; c=z;

}

빈 공간::디스플레이(빈 공간)

{

cout<<a<<" "<<b<<" "<<c<<"\n";

}

무효 연산자-(공백 &s)

{

사 =- 사;

SB =- SB;

sc =- sc;

}

정수 메인()

{

공백 s;

  1. 세트 데이터(9,2,3);

cout<<"s:";

  1. 표시하다 ();

-에스;

cout<<“-s:”;

  1. 표시하다 ();

반환 0;

}

산출:

초: 9 2 3

-s: -9 -2 -3

위의 예제 프로그램에서 operator- 는 클래스 범위에서 전역적으로 선언한 friend 함수입니다.

C++에서 친구 클래스란?

지금까지는 꽤 분명하지만 friend 클래스는 친구로 선언된 클래스의 private 및 protected 멤버 모두에 액세스할 수 있는 클래스입니다.

간단히 말해서 C++의 friend 클래스는 클래스가 다른 클래스의 private 및 protected 멤버에 액세스할 수 있기를 원할 때 사용됩니다.

다른 클래스에 친구로 선언한 클래스의 멤버 함수는 friend 클래스에 대한 friend 함수입니다. 따라서 friend 함수는 두 클래스를 모두 연결합니다.

Friend 클래스의 구문

다음은 C++의 friend 클래스 구문입니다.

클래스 R; //포워드 선언

클래스 P{

// 기타 선언

친구 클래스 R;

};

클래스 R{

// 선언

};

위의 그림에서 클래스 R은 클래스 P의 친구입니다. 결과적으로 클래스 R은 클래스 P의 개인 데이터 멤버에 액세스할 수 있습니다. 그러나 그 반대는 사실이 아니며 클래스 P는 클래스 R의 개인 데이터 멤버에 액세스할 수 없습니다. .

또한 엔터티가 범주적으로 정의되기 전에 컴파일러에게 엔터티의 존재를 알리기 위해 전방 선언이 제공됩니다. 여기서 우리는 컴파일러에게 존재를 알리기 위해 전방 선언을 사용하여 클래스 R을 선언합니다. 정방향 선언을 통해 클래스 P에서 클래스 R의 객체를 사용할 수 있습니다.

C++에서 friend 함수의 용도는 무엇입니까?

논의를 요약하면 C++에서 friend 함수의 두 가지 주요 용도를 살펴보겠습니다.

  • 첫째, 클래스의 private 및 protected 멤버에 액세스하려는 경우 friend 함수를 사용합니다. 이렇게 하려면 일반적으로 해당 클래스의 개체가 private 및 protected 멤버에 액세스하도록 요구합니다. 그러나 friend 함수는 액세스 권한을 얻기 위해 함수가 클래스 구성원이어야 하는 상황을 제거합니다.
  • C++에서 friend 함수의 또 다른 용도는 연산자 오버로딩입니다. 이름은 같지만 숫자와 인수가 다른 함수를 오버로딩 함수라고 합니다. C++의 Friend 함수는 연산자 오버로딩에 사용됩니다.

이 경우 연산자 오버로딩 함수는 friend 키워드 앞에 오고 함수 클래스 범위를 선언합니다. friend 함수에 의해 오버로드되면 이항 연산자는 두 개의 명시적 인수를 사용하고 단항 연산자는 하나의 인수를 사용합니다. 친구 연산자 함수 구현이 클래스 범위 외부에서 발생한다는 점을 제외하면 이진 연산자 함수와 동일한 방식으로 작동합니다.

이것 으로 C++의 friend 함수 와 그 사용법 에 대한 논의를 마치겠습니다 . 이것이 C++에 대한 지식을 넓히는 데 도움이 되기를 바랍니다.

또한, 풀 스택 개발자로서의 경력을 시작하려는 경우 upGrad 는 IIT Bangalore와 협력하여 13개월 동안 소프트웨어 개발의 전체 온라인 대학원 대학원 과정 – 풀 스택 개발 전문화를 제공합니다.

프로그램 하이라이트:

  • 업계 관련 사례 연구 및 과제에 대한 실습 노출
  • 450시간 이상의 360도 학습
  • 10개 이상의 최고의 프로그래밍 도구 및 언어
  • 1:1 진로 멘토링 업계 멘토와 함께하는 세션
  • 연중무휴 학생 지원

오늘 가입 하여 독점적인 upGrad 혜택을 받으십시오!

C++의 friend 함수는 무엇입니까?

C++의 friend 함수는 클래스의 멤버는 아니지만 private 및 protected 멤버에 액세스할 수 있는 함수입니다.

친구 기능을 어떻게 선언합니까?

friend 함수는 클래스의 개인 및 보호 데이터에 액세스할 수 있습니다. friend 함수를 선언하기 위해 클래스 본문 내에서 friend 키워드를 사용합니다.

C++에서 반 친구를 어떻게 사귈 수 있나요?

C++에서 friend 키워드를 사용하여 클래스를 friend 클래스로 선언합니다. 키워드를 사용하면 모든 클래스가 다른 클래스 및 함수의 private 및 protected 멤버에 액세스할 수 있습니다.