초기 C++에서 정착된 표준들을 고대 C++이라 함(모던 c++ 을 말하는 것이 아니다)
int& ref = NULL //ERROR
int& ref; // ERROR
참조하는 대상을 바꿀 수 없음
int num1;
int num2;
int& ref = num1;
ref = num2; // num1에 num2 대
참조는 성능의 이점은 취하면서 포인터를 사용하면서 발생 할 수 있는 위험을 줄여준다. Swap 같은 것들은 참조를 이용해야 한다
void Swap(int& a, int& b) {
int temp = a;
a = b;
b = temp;
}
참조는 무조건 초기화 해야 되기에 NULL 체크 안해도 됨. 소유하지 않는 메모리 접근을 막는다
컴퓨터는 참조가 뭔지 모른다
class MyIntArray {
public:
enum {Max = 3};
private:
int mArray[MAX];
}
Enum을 클래스에서 정의하는 상수처럼 사용할 수 있다. C#은 enum에 반드시 이름을 써야 하는것 같다.
#define으로 하면 전역적으로 적용되기에 특정 모듈에 범위 지정하기가 어렵다.
static const int Max = 3;
을 하면 Max를 위한 메모리를 할당해야 한다.
cout << MyINtArray::Max << endl;
처럼 접근이 가능 하다. 클래스 내에 배열 사용시 new를 안 쓰는것이 좋다.
// [Good]
class MyArray {
int mArray[10];
}
// [Bad]
class MyArray {
int* mArray;
}
//Memory Leak 발생 가능.