class Cents
{
private:
int m_cents;
public:
Cents(int cents = 0) { m_cents = cents; } //생성자
int getcents() const { return m_cents; }
friend Cents operator + (const Cents& c1, const Cents& c2)
{
return Cents(c1.m_cents + c2.m_cents);// 안으로 들어왔기 때문에 getcents()함수를 통해서 접근할 필요가 없음.
}
};이렇게 클래스 안에서 정의한것과 class Cents
{
private:
int m_cents;
public:
Cents(int cents = 0) { m_cents = cents; } //생성자
int getcents() const { return m_cents; }
friend Cents operator + (const Cents& c1, const Cents& c2);
};
Cents operator + (const Cents& c1, const Cents& c2)
{
//return Cents(c1.getcents() + c2.getcents());
return Cents(c1.m_cents + c2.m_cents);
}이렇게 밖에서 정의하는것의 차이가 궁금합니다.강의 마지막 부분에 클래스 부득이하게 멤버변수라던지 등등이 선언이 안되서 컴파일 에러가 발생하기 때문에 아예 존재한다 정도만 알려주는 선에서 미리 선언만 클래스 내부에서 하고 정의는 아예 밖에서 해버리는 케이스를 예로 들면서 설명해주셨는데요 오직 이런 상황만이 저렇게 friend함수를 외부에서 정의하는 이유에 해당되는지 아니면 주된 목적이 따로 있는지 궁금합니다. 요약.1.friend함수를 클래스 내부or외부 에서 정의할때 기능적인 차이 혹은 이유가 존재하는지??