글쓴이: girneter / 작성시간: 수, 2004/03/24 - 8:51오후
struct some_struct a,b;
가 있다고 하고
구조체 b에 이런저런 값을 넣고
a = b;
로 대입하면
compiler 가 이를 어떻게 처리하나요?
멤버값을 하나하나 복사하는건 절대 아닐테고
양쪽의 포인터를 가져다가 크기만큼
memcpy 를 하는건가요?
struct 에 int 나 char 만 있는 경우는 그냥
멤버값들이 복사된다고 생각하면 편한데
struct 안에 배열이나 다른 구조체, 클래스
등을 가지면 대입할때 어떻게 되는지 궁금합니다.
Forums:
C++ 에서라면, = 은 대입 연산자를 호출하게 됩니다. 따로 대입 연산
C++ 에서라면, = 은 대입 연산자를 호출하게 됩니다. 따로 대입 연산자를 정의하지 않았다면 기본 대입 연산자가 사용됩니다.
C++에서의 구조체는 단순히 클래스일 뿐이므로 클래스와 별 차이가 없습니다. 클래스의 경우에는 클래스의 멤버에 대해서 모두 기본 대입 연산자를 호출하여 대입합니다. 따라서 포인터를 포함하지 않는 구조체나 클래스는 그냥 a = b 해도 전혀 문제 없고, 포인터를 포함하는 경우만 문제가 될 것입니다.
클래스가 포인터를 포함한다면 생성자, 복사 생성자, 대입 연산자를 모두 정의해야할 것입니다.
Heejoon Lee