관리 메뉴

有希

C++/클래스 사이의 타입 변환 본문

프로그래밍/C++

C++/클래스 사이의 타입 변환

有希. 2022. 1. 29. 15:20

1. 타입 변환 생성자

Dog(const Cat& cat) {
    _age = cat.GetAge();
}
//이런 클래스간 변환이 가능하다
dog = (Dog)cat;

2. 타입 변환 연산자

operator Cat()
{
	return (Cat)(*this);
}

Cat cat = dog; 가 가능

3. 참조 타입 변환

명시적인 변환은 가능하다, 암묵적인 변환은 불가능 하다

Cat cat;
Dog& dog = (Dog&)cat; //가능
Dog& dog = cat; //불가능

4. 상속 관계에 있는 클래스 간의 변환

1. 값 타입 변환
부모는 자식으로 절대 변환할 수 없다.
자식은 부모로 변환 가능.

2. 참조 타입 변환
부모->자식은 명시적만 가능
자식->부모는 둘 다 가능


정리

값 타입 변환: 비트열도 바꾸고, 논리적으로 말이 되게 바꾸는 변환 (골든 리트리버->개 OK, 놀숲->개 안됨)

참조 타입 변환: 비트열은 그대로 두고, 관점만 바꾸는 변환. 명시적으로 하면 해주긴 한다. 논리적으로 말이 된다면 막써도 변환해주지만, 그렇지 않은 경우(메모리 오염 가능성 존재)에는 암시적으론 안되고 명시적인 경우에만 가능함.

'프로그래밍 > C++' 카테고리의 다른 글

C++/STL/Vector 동작 원리  (0) 2022.01.31
C++/캐스팅(Casting)  (0) 2022.01.29
C++/malloc(free) vs new(delete)  (0) 2022.01.28
C++/메모리 구조  (0) 2022.01.28
C++/순수 가상 함수  (0) 2022.01.28