참조자 (Reference)
– 변수에 또 하나의 이름 지정
– 변수 앞에 & 연산자를 사용하여 선언
int A = 10;
int &ReferenceA = A;
사용 목적
참조자를 사용한 Call by reference 호출 가능 (ex. swap 함수)
#include <iostream>
using namespace std;
void Swap(int& x, int& y)
{ // 참조자 사용
int temp;
temp = x;
x = y;
y = temp;
}
void main()
{
int a = 100, b = 1;
Swap(a, b); // int &x = a, int &y = b와 동일
cout << "a : " << a << " b : " << b << endl;
}
프렌드 (friend)
– 클래스들 사이의 관계 형성
– A클래스에서 외부 다른 클래스 B를 friend 지정 하면 B클래스에서 A의 private 맴버 변수에 접근 가능
class A
{
friend class B;
...
}
#include <iostream>
using namespace std;
class B;
class A
{
friend class B;
private:
int numA;
public:
A(int numTmp)
{
numA = numTmp;
}
};
class B
{
public:
void print(A a)
{
cout << "A class number : " << a.numA << endl;
}
};
void main()
{
A a(10);
B b;
b.print(a);
}
friend를 사용하여 A의 외부 클래스 B에서 A의 private 맴버 변수에 대한 접근이 가능해진다. 만약 여기서 friend를 주석 처리 할 경우 error C2248 오류가 발생한다.
그러나 friend는 OOP의 핵심 중 하나인 정보 은닉에 저해되는 행위로 가급적 사용을 지양하길 권고한다.
'Language > C++' 카테고리의 다른 글
윈도우 프로그래밍 - 쓰레드 기반 동기화 예제 (0) | 2020.02.17 |
---|---|
윈도우 프로그래밍 - MFC 개요 및 배경 지식 (0) | 2018.12.28 |
C++ 더블 포인터 정리 (0) | 2018.12.27 |
지역변수, static, extern 정리 (0) | 2018.12.27 |
C4996 error in visual studio – Scanf Error (0) | 2018.12.27 |