용어 | 정리 |
---|---|
UpCast | 파생 클래스에서 기반 클래스로 변환 안전하기 때문에 암시적인 변환도 가능함 |
DownCast | 기반 클래스에서 파생클래스로의 형변환 결과를 장담할 수 없기 때문에 런타임에서 체크가 필요함 |
static_cast | 암시적 형변환과 같지만 엄격한c++버전 명확하게 어떤 타입으로 변환할지 알아야함 static_cast<변환할 타입>() 반환값이 정상인지 확인이 필요함 |
dynamic_cast | 런타임에서 동적으로 타입을 변환하여 자동으로 체크해줌 클래스의 포인터/참조형에서만 사용 가능 런타임 형식 정보 사용 체크하기 가장 안전하지만 느림 |
PureVirtualFunction | 스스로 어떤 연산을 수행하지 않지만 파생클래스에게 일종의 규격을 만들어주는 가상함수 좀 더 엄격하게 그 자체로는 의미가 없고 반드시 상속받아서 정의해야함 선언 뒤에 =0을 붙여야한다 |
AbstractBaseClass | 순수 가상 함수가 하나라도 있는 클래스 약속된 규격이외의 어떤 역할도 하지않으며 추상클래스는 인스턴스를 만들 수 없다 파생 클래스에서 모든 순수 가상 함수를 오버라이딩해야한다 순수 가상 함수로만 이루어진 추상 클래스를 인터페이스 클래스라고 하고 앞에 I를 붙이기도 함 |
FriendClass | 친구로 지정할 클래스가 모든 멤버에 접근할 수 있게되는 클래스 정보를 공개할 쪽에서 친구로 지정해야함 |
FriendFunction | 클래스 전체가 아니라 특정 함수만 접근가능하도록 만듬 |
MemberFunctionPointer | 클래스의 멤버 함수를 가리키는 포인터 클래스의 인스턴스도 같이 전달해야함 instance.*pointer(parameter) |
Namespace | 내부식별자(internal identifider: 변수 함수 클래스등의 이름 정의시 사용되는 구별 보통 변수명 함수명) 범위를 지정하는 별도로 제공되는 공간 namespace로 묶어서 사용하면 됨 |
Using | namespace를 생략하고 바로 접근하도록 도와주는 키워드 헤더파일에 사용금지 |
template | 타입을 일반화해서 어떤 타입이든 처리할 수 있도록 만들고, 프로그래머가 원하는 타입으로 컴파일러가 처리해줌 타입을 신경쓰지 않고 일반화된 개념 구현이 가능 보통 auto는 변수의 타입을 추론함 template은 함수나 클래스를 일반화 시킬 때 사용 |
explicit | 명시적 생성자 의도하지 않는 자료형의 대입으로 형변환을 막기 위해 사용하는 키워드 |