안녕하세요 삽잡이입니다.
이번 시간에는 Class와 Struct를 응용해서 더욱 깊이(?) 알아보려합니다.
List<t>는 그저 클래스 형식입니다.
t는 타입 이름을 말하는 것이구요...
t[]와 다를 바가 없습니다.
아무튼... 예를 들어
이와 같은 코드라면 int형 n에 들어있는 '100'이라는 값을 100번 저장하는 꼴입니다.
그런데, 만약 값, 참조를 List에 저장하게 되면 어떨까요??
Point형식의 x, y 필드를 담는 구조체, 변수에 대해서 생각해보겠습니다.
구조체라면, 값을 저장하게됩니다.
따라서 pt 값을 100번 저장하게 된다면,
이처럼 stack 영역에 100개의 객체가 생성되게 됩니다...
하지만, 클래스는 참조 값을 통해 객체를 가리키게 됩니다.
따라서 100개의 pt 요소들이 new Point(2,3)으로 부터 생성된 객체 하나를 가리키는 꼴이 되지요...
stack과 다르게 모두 한 객체를 참조하게 됩니다.
그런데 이 메커니즘은 C++과 다를 것이 없습니다.
단지 값 타입, 참조 타입이라는 정해진 용어가 없을 뿐이지 암묵적으로 사용하고 있었다 이겁니다.
그리고 문법이 조금 다를뿐이지요...
C++에서는 struct와 class가 다르지 않고 똑같이 취급합니다.
다를 것이 없습니다. 약간의 문법 차이만 있을 수 있지요...
아무튼... 객체를 만들고 저장하는 것은 같습니다.
그런데, C++에서는 참조 형식을 포인터를 통해 사용합니다.
따라서, C++에서는 'vector<Point*> vp;' 와 같이 참조형식을 사용해야합니다.
이렇게 되면 C#과 다를 것이 없어지지요...
그렇다면 참조자마다 객체들을 가리키게 하려면 어떻게 해야할까요?
객체를 계속해서 생성하고 push_back을 해주면 되겠지요...
이처럼 하면 실제 객체가 100개 생성될 것입니다...
모든 프로그램은 동일합니다.
C++에서는 구분해서 사용하지 않았을 뿐입니다.
단지 주소를 갖는 타입인지, 일반적인 값을 갖는 타입인지만 나눠놨을 뿐입니다...
그리고 닷넷에서는 중요하다 판단을 해서 타입으로 구분해놓은 것 뿐입니다.
이번 시간은 여기까지 알아보겠습니다.
이상 삽잡이였습니다!
'삽질의 현장 > - .NET' 카테고리의 다른 글
#031_닷넷(.NET)_.Net Framework 기본 - Up Cast & Down Cast (0) | 2015.10.27 |
---|---|
#030_닷넷(.NET)_.Net Framework 기본 - 생성자 주의 사항 (0) | 2015.10.27 |
#028_닷넷(.NET)_.Net Framework 기본 - 클래스와 구조체의 용도 (0) | 2015.10.27 |
#027_닷넷(.NET)_.Net Framework 기본 - Getter/Setter (속성) & 생성자 (0) | 2015.10.27 |
#026_닷넷(.NET)_.Net Framework 기본 - 접근 한정자 (0) | 2015.10.27 |