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 |