C++ 자료구조론 보려고 질렀는데 정말 오랫동안 안봤다
이제라도 봐야지
처음부터 대충 정리하면서 보겠음
C와 C++의 다른점
1. C++ 연산자는 new 와 delete를 제외하고는 C의 연산자와 모두 동일하다.
2. << 와 >> 연산자를 이용하여 입력과 출력을 한다
3. 연산자 다중화 (operator overloading)를 허용 한다
C++의 매개변수 전달
C++에서 기본 인자 전달 방식은 값으로 전달이다.. 객체가 값으로 전달되면 지역 저장소에 복사 되겠지? 그럼 함수는 복사본에 접근해서 일을 처리하게 된다.
따라서 함수 내부에서는 그 지역 복사본만 처리 하기 때문에 실인자에는 영향을 주지 않지.. 참조 할 경우에만 쓰면 되겠음. 이럴때는 그냥 const를 붙여서 헷갈리지 않게 처리해주는게~
인자는 참조(reference)로 전달 할 수도 있는데 변수 앞에 int &a 이런식으로 적어주면 된다.. 그러면 그 위치의 주소만 함수의 지역 저장소에 복사 되어서. 함수는 주소로 바로 실인자에 접근하게 되는거지! 객체를 복사 하지 않으니까 주소보다 더 큰 메모리를 요구 하는 경우에는 더 빠르단거지!
그래서 가끔 코드들 보면 빠르게 넘기기 위해서 const type &a 란 식으로 넘기는걸 보곤 하지..
C++의 함수 이름 다중화
function overloading 는 함수의 시그니처가 다르기만 하면 같은 이름을 가진 함수가 둘 이상 존재 할 수 있다.예를 들자면........!! 이런식으로!!
int MAX(int, int);
int MAX(int, int, int);
inline 키워드
#define랑 같다고 보면 된다
inline int sum( int a, int b) { return a + b; } 라고 선언해 놓고
void main() { sum(a, b); } 라고 코드를 작성하게 되면 sum( a,b) 는 a+b로 대체되어서 오버헤드를 없앤다
C++에서 동적 메모리 할당
new 연산자는 저장 소를 할당 받는데. 생성한 포인터를 반환 하거나 실패 했을 경우 예외를 발생 시킨다.
만약 요청받은 메모리를 할당 할 수 없다면 bad_alloc 타입의 예외를 발생 시킨다.
C++에서 struct는 묵시적 접근 레벨이 공용인 점을 제외하고는 class와 같다. struct는 기본 public로 정의되고 class는 private이다.
union은 데이타 멤버들 중에서 가장 큰 것을 저장 할 수 있는 기억 장소를 할당하여 놓고 어느 한 순간에 오직 어느 한 데이터 멤버의 값만을 저장하는 구조이다.
static 클래스 데이터 멤버는 그 클래스에 대한 전역 변수로 생각 할 수 있다. 클래스 멤버 함수 입장에서 볼때는 다른 데이터 멤버와 같지만. 각 클래스 객체는 자신만의 독자적인 사본을 가지고 있지 않다는것이 다르다. 모든 클래스 객체는 이 정적 데이터 멤버를 공유한다.
'프로그래밍 > C/C++' 카테고리의 다른 글
GOF 상태패턴 미로게임 Maze Game (0) | 2013.07.23 |
---|---|
CString, BSTR, char 자료형 변환 (0) | 2013.04.03 |
템플릿 (0) | 2012.02.13 |
이펙티브STL, 생성자에 지역변수 넘기기 (0) | 2012.01.19 |
비트카운터 (0) | 2012.01.14 |