반응형
C++에서는 객체의 실제 클래스 이름을 알아내기 위해 typeid 연산자와 type_info 클래스를 활용할 수 있습니다. 이 기능을 사용하려면 객체가 다형적(polymorphic)이어야 하므로, 즉 클래스에 가상 함수가 정의되어 있어야 합니다.
아래는 typeid를 이용해서 객체의 클래스 이름을 알아내는 예제입니다.
#include <iostream>
#include <typeinfo>
class Base {
public:
virtual ~Base() {} // 다형성을 위해 가상 소멸자를 추가합니다.
};
class Derived : public Base {};
int main() {
Base* obj = new Derived();
// 객체의 실제 클래스 이름을 출력
std::cout << "Class name: " << typeid(*obj).name() << std::endl;
delete obj;
return 0;
}
(Output)
Class name: class Derived
설명
- typeid(*obj).name()을 사용하여 obj 포인터가 가리키는 객체의 실제 클래스 이름을 얻을 수 있습니다.
- typeid(*obj)는 객체의 실제 유형을 반환하며, 이 정보는 std::type_info 객체에 저장됩니다.
- name() 메서드를 호출하면 클래스 이름을 반환합니다. 다만, 이 이름은 컴파일러마다 다르게 표시될 수 있으며, 예를 들어 g++에서는 컴파일러가 가독성을 떨어뜨리는 형태로 출력할 수 있습니다.
반응형
'C_C++' 카테고리의 다른 글
C++, 프렌드 함수로 연산자 오버로딩 만들기 (0) | 2024.11.14 |
---|---|
C++, 멤버함수로 연산자 오버로딩 (0) | 2024.11.13 |
C++, 순수가상함수 Pure Virtual Function (0) | 2024.11.11 |
C++, 가상 함수의 특징 Features of Virtual Functions (0) | 2024.11.10 |
c++, 정적 멤버 변수와 정적 함수 static member variables and static functions (0) | 2024.11.02 |