LANGUAGE/C++
[C++] FRIEND
진심스테이크
2018. 3. 14. 15:12
friend
- 접근 지정자에 상관없이 모두 public으로 인식하여 사용한다
- 캡슐화의 파괴 주범
- 코드의 확장을 위해 사용
- 원래 내꺼가 되어야 하는데, 접근할 수 없을 때 사용 -> 다 접근할 수 있게 권한을 줌
- 연산자 함수에서 사용
ex) 3 + 객체
관계
1. friend class
2. friend method : 객체 안에 있는 특정 메소드만 friend 적용
3. friend function : 외부함수에서 접근
- 가장 많이 씀
- class A가 있고 class B가 있을 때, class A에 아무곳에 friend B; 라고 선언하면 B에 접근이 가능
#include "stdafx.h"
#include <iostream>
using namespace std;
class A {
int money;
public :
A(int pay = 10000) {
money = pay;
}
void setMoney(int pay) { money = pay; }
int getMoney() const { return money; }
friend class B; //A 클래스 아무곳에서 선언가능
//friend void B::disp(); //오류 - 인식이 안됨 : B가 존재하는지 모름
};
class B {
public :
void disp() {
A aa;
//cout << aa.getMoney() << endl;
cout << aa.money << endl; //필드 직접 호출 - friend
}
};
void main() {
B bb;
bb.disp();
}
#include "stdafx.h"
#include <iostream>
using namespace std;
class A {
int money;
public :
A(int pay = 10000) {
money = pay;
}
void setMoney(int pay) { money = pay; }
int getMoney() const { return money; }
friend void disp();
};
void disp() {
A aa;
cout << aa.money << endl; //friend 함수 지정 - 아니면 오류
}