- 도우미 함수 (helper func)
Compiler 가 생성해주는 Member func ( Default 생성자는 다른 생성자가 존재하면 생성안됨)
class Array {
public:
Array() { // 디폴트 생성자
}
};
class Array {
public:
Array(const Array& rhs) { // 복사 생성자
}
};
class Array {
public:
Array& operator=(const Array& rhs) { // 대입 연산자 오버로딩
}
};
class Array {
public:
~Array() { // 소멸자
}
};
2 . Name Mangling
컴파일 과정에서 식별자(Identifier)는 같지만 다른 namespace에 속해 있거나, 다른 시그니쳐를 가지는 경우(ex. function overloading) 고유한 이름을 가지게 하기 위해 호출 규약(calling convention) 등에 따라서 함수나 변수의 이름을 컴파일러가 변경하는 것
C언어
에서는 name magling이 없으므로 extern "C"
를 사용하여 C++ 컴파일러(현재 실행중인 프로그램 체계)에게, C로 작성한 코드이니 C문법을 적용하여 컴파일하라는 의미를 알려준다. 정확히 말하면, C++의 변수 맹글링(오버로딩)아닌 C의 변수 맹글링(동일한 함수명 사용 문법, 오버로딩 하지 않음)을 적용하라는 의미
- ++a ,a++ 구현
a++
와++a
는 C++ 및 다른 C 기반 프로그래밍 언어에서 사용되는 증가 연산자(Increment Operator)입니다. 이 두 연산자는 변수의 값을 증가시키는 역할을 한다
a++
(후위 증가 연산자, Post-increment):a++
는 변수 a
의 현재 값을 사용한 후에 a
를 1 증가a
의 현재 값을 반환하고, 그 다음에 a
가 1 증가int a = 5;
int b = a++; // b는 5가 되고, a는 6이 됨
++a
(전위 증가 연산자, Pre-increment):++a
는 변수 a
를 1 증가시킨 후에 a
의 증가된 값을 사용a
를 1 증가시킨 후에 그 증가된 값을 반환int a = 5;
int b = ++a; // a와 b 모두 6이 됨