소개
이 랩에서는 C++ 프로그래밍 언어에서 Friend Function의 개념을 시연하는 방법을 배웁니다. private 멤버 변수를 가진 Volume 클래스를 생성하고, 클래스 외부에서 이러한 private 변수에 접근하기 위해 Friend Function을 사용합니다.
이 랩에서는 C++ 프로그래밍 언어에서 Friend Function의 개념을 시연하는 방법을 배웁니다. private 멤버 변수를 가진 Volume 클래스를 생성하고, 클래스 외부에서 이러한 private 변수에 접근하기 위해 Friend Function을 사용합니다.
먼저, ~/project 디렉토리에 main.cpp라는 이름의 새로운 C++ 파일을 생성하고, 다음 코드를 추가하여 Volume 클래스를 정의합니다.
#include <iostream>
using namespace std;
//CPP 에서 Friend Function 의 개념을 시연하기 위한 Volume 클래스
class Volume {
//멤버 변수는 private 으로 선언되어 클래스 외부에서 직접 접근할 수 없습니다.
private:
int liter;
//기본 생성자를 사용하여 변수 liter 의 값을 2 로 초기화합니다.
public:
Volume(): liter(2) {}
};
private 멤버 변수 liter를 가진 Volume 클래스를 정의했습니다. 이 변수는 클래스 외부에서 직접 접근할 수 없습니다.
이제 Volume 클래스에 대한 Friend Function을 선언하여 클래스 외부에서 이 클래스의 private 변수에 접근할 수 있도록 합니다.
//Volume 클래스에 대한 Friend Function 선언
friend int mulFive(Volume);
mulFive()라는 이름의 Friend Function을 선언했습니다. 이 함수는 Volume 객체를 입력으로 받아 정수 값을 반환합니다.
이제 Friend Function 기능을 사용하여 Volume 클래스의 private 변수에 접근하는 mulFive() 함수를 정의합니다. mulFive() 함수를 정의하기 위해 다음 코드를 추가합니다.
// Volume 클래스에서 사용할 Friend Function 정의
int mulFive(Volume v) {
//Friend function 은 비멤버 함수에서 private 데이터에 접근할 수 있도록 합니다.
v.liter *= 5;
return v.liter;
}
Friend Function 기능을 사용하여 Volume의 private 변수 liter에 접근할 수 있는 mulFive() 함수를 정의했습니다. 이 함수는 liter 변수에 5 를 곱하고 그 값을 반환합니다.
main() 함수에서 Volume 클래스의 객체를 생성하고 mulFive() 함수를 호출하여 Volume 클래스의 private 데이터에 접근하고 조작합니다. 이것이 마지막이자 가장 중요한 단계입니다.
// 클래스 멤버에 접근하기 위해 main 메서드 정의
int main() {
cout << "\n\nWelcome to LabEx :-)\n\n\n";
cout << " ===== Program to demonstrate the working of a Friend Function in CPP ===== \n\n";
// 클래스 멤버에 접근하기 위해 클래스 객체 선언
Volume vol;
cout << "Friend Function 호출 후 Volume = " << mulFive(vol);
cout << "\n\n\n";
return 0;
}
Volume 클래스의 객체를 생성하고 mulFive() 함수를 호출하여 Volume 클래스의 private 데이터에 접근하는 main() 함수를 정의했습니다.
이 랩에서는 Volume 클래스를 생성하고 Friend Function을 사용하여 클래스 외부에서 이 클래스의 private 변수에 접근함으로써 C++ 프로그래밍 언어에서 Friend Function의 개념을 시연하는 방법을 배웠습니다. Friend Function은 클래스의 private 멤버에 접근할 수 있는 비멤버 함수이며, 클래스의 private 데이터를 조작하거나 접근해야 하는 경우 유용할 수 있습니다.