▶ 연산자
ㆍ 프로그램이 동작할 때 정해져 있는 특정한 연산을 수행하는데 사용되는 기호나 키워드
▶ 연산자의 종류
ㆍ 산술 연산자 ( + , - , * , / , %)
ㆍ 비교 연산자 (==, != , < , > , <= , >= )
ㆍ 할당 연산자 (=, += , -= , *= , /= , &=)
ㆍ 비트 연산자 (<< , >> , ~, | , & , ^)
ㆍ 논리 연산자(&& , || , !)
ㆍ 형변환 연산자 (특정 자료형)
└ c 스타일의 명시적 형변환은 강제 형변환이기 때문에 버그가 생길 여지가 있다.
└ 그래서 안정성을 우선시 한다면 c++타입의 캐스팅 연산자를 사용해야 한다.
※ 이 외에도 단항연산자, 이항연산자, 전위/후위 증감연산, 삼항연산 등등 많은 연산자들이 있다.
▶ C++의 캐스팅연산자
1. static_cast
ㆍ 가장 일반적인 형변환 연산자로 컴파일 시점에 형변환이 가능한지 확인한다.
ㆍ 위 예시에서 i는 3이된다.
2. dynamic_cast
ㆍ 주로 클래스의 포인터나 참조형을 상속 계층 내에서 안전하게 형변환 하는데 사용된다.
ㆍ 이 연산자는 실행시점에 해당 변환이 가능한지 확인하므로 조금 더 안전하지만 성능이 저하될 수 있다.
ㆍ위 코드에서 base변수에 실제 메모리에 할당된 객체는 Derived 타입이지만 이 객체를 가리키는 포인터는 부모클래스인 Base타입이라는 점.
ㆍ if 문 내에서 'dynamic_cast' 를 사용해 'base' 포인터가 실제로 가리키고 있는 객체가 'Derived' 타입임을 확인해준다.
ㆍ 만약 'base'가 가리키고있는 객체가 'Derived'타입이라면 안전하게 해당 객체의 맴버변수 'a'값에 접근해서 값을 변경할 수 있다.
3. const_cast
ㆍ 객체의 상수성을 추가하거나 제거하는데 사용된다
ㆍ 위 코드에서 const_cast를 이용해 ci의 상수성을 제거했지만, 실제로 원래 값이 상수였기 때문에
그 값을 변경하는 것은 정의되지 않은 동작을 초래할 수 있다.
4. reinterpret_cast
ㆍ 서로 관련 없는 타입들 사이에 변환을 수행한다.
'C++프로그래밍 > C 와 C++ 기초실습' 카테고리의 다른 글
상수 (1) | 2023.10.09 |
---|---|
함수 (1) | 2023.10.09 |
조건문 (1) | 2023.10.09 |
반복문과 출력 (1) | 2023.10.09 |
자료형과 변수, 네임스페이스 (1) | 2023.10.09 |