본문 바로가기

This 포인터 클래스 함수 안에는 this포인터가 숨겨져 있다. this 포인터는 자기 자신과 같게 사용된다. 자기 자신에 잇는 모든 멤버변수, 멤버함수에 접근할 수 있다. 그리고 우리는 함수를 쓰면서 상수성을 시키면서 안전성을 유지 시켜주고자 한다. const를 잘 쓰면 에러가 일어난 가능성도 줄어들 것이다. this포인터 역시 const를 할 수 있다. 대표적으로 보여줄 수 있는것이 get, set 멤버 함수이다. int GetAge() const {...} int SetAge(int iAge) {...} GetAge의 경우 this가 const된것이다. 정확히 쓰면 const 'class_name' * const this 가 된것이다. 그럼 SetAge의 경우는? 'class_name' * const this 인.. 더보기
생성자/소멸자(파괴자) 생성자와 소멸자(파괴자)는 클래스의 시작과 끝에 각각 실행된다. 생성자의 경우 주로 클래스를 쓰기 위해서 필요한 인자를 받기위해서 사용하고, 소멸자의 경우 주로 할당된 동적 메모리의 해제를 위해서 사용된다. 생성자/소멸자를 선언해주지않으면 자동으로 디폴트 생성자/소멸자가 생성된다. 생성자 중에서 독특한 녀석은 복사 생서자 이다. 복사 생성자란 자기 자신과 같은 꼴의 녀석을 자신의 생성 인수로 받아서 그 녀석과 같게 생성되는 것이다. class cat{}; cat a; cat b(a); // 이러면 cat a와 같은 녀석의 b가 만들어 지는것이다! 그런데 복사생성자는 기본적으로 shallow copy를 한다. 만약 cat 클래스 안에 포인터 변수가 있다면 shallow copy를 하게 되면 안될 것이다. .. 더보기
인라인함수 인라인 함수는 실행속도가 빠르다. 보통 함수의 실행은 1.인수의 값을 순서대로 스택에 밀어 넣는다. 2.함수가 복귀할 번지를 저장한다.(바로 다음 번지는 스택에 저장) 3.함수가 정의 되어 있는 번지로 점프해서 제어권은 함수가 갖는다. 4.함수는 스택에 자신의 지역변수를 위핸 공간을 만든다. 5.함수의 코드를 수행 6.리턴값을 넘긴다. 7.복귀 번지로 리턴 8.스택 정리 위와 같이 복잡한 단계를 거쳐야 함수 하나가 수행되는 것이다. 그러나 인라인함수는 이와 다르게 함수의 호출부에 함수의 실행 부분이 있는 것이다. 그러면 굳이 스택을 지정해주고 다음 실행될 번지를 지정하고 함수실행후 돌아오는 번거로운 작업 필요없이 함수의 호출시에 스 함수가 실해되게 하는 것이다. 그러나 이렇게 만들경우에 실행파일이 커지는.. 더보기