고대의 C++

mohadang·2022년 9월 17일
0

C++

목록 보기
3/48
post-thumbnail

고대 C++

초기 C++에서 정착된 표준들을 고대 C++이라 함(모던 c++ 을 말하는 것이 아니다)

C에서 새로 추가된 것들

  • 참조
  • bool : 엄밀히 말하면 고대에 온것이 아니라 모던에 들어온 것임
  • 객체지향 프로그래밍

참조

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 체크 안해도 됨. 소유하지 않는 메모리 접근을 막는다
컴퓨터는 참조가 뭔지 모른다

  • 포인터와 참조는 같은 어셈블리 명령어를 생성함
  • 참조는 오직 인간을 위한 것임
  • 컴파일러는 참조를 포인터로 바꿔 줌. 기계가 이해할 수 있도록...

enum을 이용하여 상수 지정하기

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 발생  가능.
profile
mohadang

0개의 댓글