스터디/C++

C++ 에서 Reflection 을 지원하지 않는 이유

kcrong 2015. 2. 25. 21:13

java나 C# 에서는 reflection 을 지원한다.

하지만 C++에서는 reflection 을 지원하지 않는데,

그 이유는


C#, Java     <-- -->         C++

primitive type           class 있음                    class 없음

(사용자 정의로 만들 수 있는 타입을 제외한 모든 타입. char, int 등)


C#과 Java는 프리미티브 타입에 대한 클래스를 만들어 놓아서 상호 호환이 가능하다.

하지만 C++에서는 그 클래스를 만들어 놓지 않아 호환이 되질 않는데, 왜 없는 걸까

C#이나 Java는 타입에 대한 크기가 이미 결정되어 있다.

하지만 C++은 결정되어 있지 않기 때문에, (머신 마다 크기가 다름 32bit,64bit 등)

클래스를 만들지 못한다. (타입의 종속 X)

--> C++ 의 목표는 자기보다 낮은 레벨의 언어를 만들지 못하게 하는것. (C++가 가장 로우 레벨의 언어가 되게 하는것이 목표) 이다. 따라서 86 64 까지 커버하기 위해 타입의 크기를 머신마다 다르게 해야 했고, 그에 따라 프리미티브 타입의 클래스를 정의할 수 없었다.

이 결과로 reflection을 C++에서 지원하지 않는다.



결론: sizeof(int) 가 몇인지 몰라서.