friend 클래스

2019. 8. 12. 14:12PL/C++

friend는 클래스간 상호작용을 위해서 사용된다. 객체지향의 encapsulation 정의에 어긋나서 되도록 사용은 지양하지만 연산자 오버로딩에서 자주 쓰이곤 한다

 

#include <iostream>

using namespace std;

class Time {
	friend class Date;
private:
	int hour, min, sec;
	
public:
	void setCurrentTime() {
		time_t currentTime = time(NULL);
		struct tm *p = localtime(&currentTime);
		hour = p->tm_hour;
		min = p->tm_min;
		sec = p->tm_sec;
	}		
};

class Date {
private:
	int year, month, day;
	
public:
	Date(int year, int month, int day) : year(year), month(month), day(day) {}
	void show(const Time &t) {
		cout << year << "년 " << month << "월 " << day << "일\n";
		cout << t.hour << ":" << t.min << ":" << t.sec << '\n';
	}	
};

int main(void) {
	ios_base::sync_with_stdio(false);
	cin.tie(nullptr);
	
	Time t;
	t.setCurrentTime();
	Date d(2019, 8, 12);
	d.show(t);
	
	return 0;
}

 

friend 클래스와 다르게 friend 함수는, 함수 내부에서만 클래스의 모든 변수들을 사용할 수 있다