개발/C++

[C++] 선언

hojak99 2016. 10. 1. 09:58

나는 다른 방식으로 글을 써보려한다. 

내가 현재 읽고 있는 책은 “Effective C++” 이라는 책이며 내가 읽을 만한 난이도보다 좀 더 높은 난이도의 책이지만 이 책에 나와 있는 개념, 내용들 중 내가 모르는 것이 나오면 그것에 대해 검색을 하면서 좀 더 알아갈 수 있으며 이 책이 재밌다고 생각하기 때문에 선택했다.

 


선언에 대해서 다시 한 번 짚고 가자


선언과 정의는 개발자는 거의 모두 한번 이상은 사용해 본 적이 있을 것이다. 하지만이 두 가지의 단어가 가지는 뜻을 모르거나, 헷갈려하는 사람들이 있다.

 

선언: 코드에 사용되는 어떤 대상의 이름과 타입을 컴파일러에게 알려 주는 것이지만 세부사항은 들어 있지 않다.


예를 한번 보자.


[선언의 예] 

extern int x;                                           //객체 선언 


std::size_t numDigits(int number);               //함수 선언 


class Widget;                                         //클래스 선언


template<typename T> class GraphNode;    //템플릿 선언


이 예를 보면 int x 에 대해서 객체라고 한 부분을 볼 수 있다

바로 여기 이 부분에 대해서 나는 이해를 하지 못하겠다. 정수는 기본제공 타입인데 왜 객체라고 했는지에 대해서 나는 정말 이해하지 못했다.


이 책의 저자는 이러한 이유를 이렇게 들었다.


프로그래머 가운데 객체라는 용어의 범위를 사용자 정의 타입의 변수로 한정하는 분들이 있는데 저는 그쪽 계열이 아닙니다.”


뭐지? 책을 읽기만 했을 때는 이 말이 이해가 안됐다. 내가 난독증이거나 이 책의 발번역을 탓했는데 이렇게 글을 써보니 갑자기 이해가 됐다.


즉, 이 말은 이 책의 저자는 객체라는 용어의 범위를 사용자 정의 타입의 변수로 생각하지 않는다는 말인 것 같다

JAVA를 공부하면서 클래스의 특성 중 하나가 사용자 정의 데이터 타입인데 그렇다면 이 책의 저자는 사용자 정의 타입의 변수라고 말한 것이 즉 class 변수를 이야기하는 것인 것 같다. 그렇다면 이제 왜 int를 객체라고 말했는지에 대해서 생각을 해보자. .. 모르겠다.



구글에 객체를 검색해보면 답이 나온다!!!!


가장 간단한 구현으로서 객체 또는 오브젝트(object)는 저장 공간에서 할당된 공간을 의미한다. 프로그래밍 언어는 변수를 이용해 객체에 접근하므로 객체와 변수라는 용어는 종종 함께 사용된다.


좋다. 이로서 나는 선언을 공부하면서 객체, 클래스, 변수에 대해서 다시 되새겨보고 공부를 하게 되었다. 나는 이것을 원했다







'객체'라는 단어가 오직 클래스 변수라는 것만 나타내는 말이 아니다.

반응형