ݺߣ

ݺߣShare a Scribd company logo
C++ !
http://blog.naver.com/ruvendix
구성원 초기화(멤버 이니셜라이저)
구성원 초기화를 이용하면 필드(멤버 변수)를 생성과 동시에 초기화!
생성자 안에서 초기화하는 것보다 더 빠름!
const, 참조자, 클래스는 반드시 구성원 초기화를 이용해야 함!
class CTest
{
const int iNum;
CTest(void) :iNum(10)
{
// 여기보다 구성원 초기화가 더 빠름
}
};
http://blog.naver.com/ruvendix
firend 예약어
firend 예약어는 정보 은폐를 무효화시킴!
따라서 신중하게 사용해야 함!
class CTest
{
friend class CPos; // Cpos를 친구로 인정
int iNum;
};
Class Cpos
{
// CPos는 CTest의 필드 및 메서드 사용 가능!
};
http://blog.naver.com/ruvendix
this 포인터
컴파일러는 여러 객체를 구분할 수 있어야 함!
그래서 this라는 객체 자신을 가리키는 포인터를 이용!
class CTest
{
int iNum; // this->iNum;
};
http://blog.naver.com/ruvendix
클래스와 static
객체가 아니라! 클래스 차원의 정보가 필요하다면?
static으로 필드와 메서드를 만들어라!
class CTest
{
static int iNum; // 모든 CTest 객체가 공유
static void Show(void); // 모든 CTest 객체가 공유
};
int Ctest::iNum = 0; // static 필드는 이렇게 초기화!
C++은 static 덕분에 전역 변수의 존재가 약해짐!
그냥 전역 변수를 사용하고 싶으면 static 필드를 사용!
http://blog.naver.com/ruvendix
클래스와 const
클래스의 필드를 변경하고 싶지 않다면?
const로 필드와 메서드를 만들어라!
class CTest
{
const int iNum;
void Add(void) const; // const 메서드
};
const CTest Test; // const 객체
Test. Add(); // const 객체는 const 메서드만 허용!
C++에서는 const 덕분에 보안은 강화되었지만
const를 잘 이해하지 못한다면 귀찮은 존재가 됨…
http://blog.naver.com/ruvendix
mutable 예약어
class CTest
{
mutable int iNum;
void Add(void) const
{
iNum = 100; // 변경 가능!
}
};
const 메서드에서도 필드를 자유롭게 변경하고 싶으면
mutable을 사용하라!
http://blog.naver.com/ruvendix

More Related Content

클래스의 추가 지식