inflearn logo
강의

Course

Instructor

Hong Jung-mo's C++ Programming: Learning by Doing

8.12 Friend Functions and Classes friend

friend함수 관련 질문이 있습니다.

308

seungmin38

11 asked

0

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외부 에서 정의할때 기능적인 차이 혹은 이유가 존재하는지??

 

c++ friend함수 C++

Answer 1

0

kangminchul

클래스 부득이하게 멤버변수라던지 등등이 선언이 안되서 컴파일 에러가 발생하기 때문에 아예 존재한다 정도만 알려주는 선에서 미리 선언만 클래스 내부에서 하고 정의는 아예 밖에서 해버리는 케이스를 예로 들면서 설명해주셨는데요

위 말씀의 의미가

'유지보수 과정에서 오류가 발생할 수 있다'는 점을 지점을 언급하신 지점인듯 한데(맞나요?)

일단 정의하는 지점에 대한 정해진 규약은 없습니다.

유지보수/코드의 가독성 측면에서의 차이는 있을 수 있겠으나

기능적으로 차이가 있지는 않습니다.

변수가 메모리에 저장되는 것을 알려주는 강의가 어떤강의였죠

1

461

1

메모리 주소 10진수로 출력

1

650

1

클래스 템플릿 특수화에서 boolalpha로 표현된 리턴값에 대해 질문이 있습니다.

1

496

1

여러가지 리턴 타입에 관한 강의가 어떤 걸까요?

1

529

1

메모리 주소에 관한 질분

0

676

1

인터페이스 클래스에서 reportError의 매개변수에 대해 궁금한 것이 있습니다.

0

545

1

형변환 오버로딩에서 const 관련 질문이 있습니다.

0

439

1

Digit 뒤에 reference를 사용하는 이유

0

504

1

4.2 전역 변수, 정적 변수, 내부 연결, 외부 연결

0

319

1

dat파일이...

0

534

1

TODO:대입 연산자 오버로딩에 대한 소스코드입니다.

0

640

1

복사 생성자 관련 질문이 있습니다.

0

450

1

수업 중 궁금한점이 있습니다.

1

386

1

라이브러리자체가 이해가 되지 않습니다.

0

557

1

마지막 예제 질문

0

299

1

증감연산자 위치에 따른 수행 순서 질문입니다.

0

371

1

단항 연산자 오버로딩에서 return 부분에 질문이 있습니다.

1

408

1

operator+ 정의부분에서 궁금한 것이 있습니다.

0

443

1

3분 17초 질문

0

346

1

함수에 값을 대입한다는 개념이 이해가 되지 않습니다.

0

443

1

int getvalue() const에서 const는 왜 뒤에 붙는건가요?

0

440

2

const Something &st에서 const를 빼면 안되나요?

0

296

1

friend함수는 다른 클래스의 멤버함수로 쓸 수 없나요??

1

489

1

연쇄호출에 대해 질문있습니다!

0

371

1