본문 바로가기

스터디/C++

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

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) 가 몇인지 몰라서.



'스터디 > C++' 카테고리의 다른 글

R-value, L-value -> Value-type  (0) 2015.03.24
for문 한개와 두개의 성능차이.  (0) 2015.02.25
C++ 손건의 흑역사 (재미있는 C++ 문제)  (0) 2015.02.25
20150114 스터디 정리  (0) 2015.01.14
내용정리 1  (0) 2015.01.11