ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 구조체 대입연산
    C++/개념정리 2019. 1. 23. 11:17



    출처:https://blog.naver.com/inforide/80019702743



    구조체멤버에 배열이나 class 가 있을때 대입하면 어떻게 되나요

    girneter의 이미지

    struct some_struct a,b;

    가 있다고 하고
    구조체 b에 이런저런 값을 넣고
    a = b;

    로 대입하면
    compiler 가 이를 어떻게 처리하나요?

    멤버값을 하나하나 복사하는건 절대 아닐테고
    양쪽의 포인터를 가져다가 크기만큼
    memcpy 를 하는건가요?

    struct 에 int 나 char 만 있는 경우는 그냥
    멤버값들이 복사된다고 생각하면 편한데
    struct 안에 배열이나 다른 구조체, 클래스
    등을 가지면 대입할때 어떻게 되는지 궁금합니다.

    wafe의 이미지

    C++ 에서라면, = 은 대입 연산자를 호출하게 됩니다. 따로 대입 연산자를 정의하지 않았다면 기본 대입 연산자가 사용됩니다.

    C++에서의 구조체는 단순히 클래스일 뿐이므로 클래스와 별 차이가 없습니다. 클래스의 경우에는 클래스의 멤버에 대해서 모두 기본 대입 연산자를 호출하여 대입합니다. 따라서 포인터를 포함하지 않는 구조체나 클래스는 그냥 a = b 해도 전혀 문제 없고, 포인터를 포함하는 경우만 문제가 될 것입니다.

    클래스가 포인터를 포함한다면 생성자, 복사 생성자, 대입 연산자를 모두 정의해야할 것입니다.

    Heejoon Lee

    출처:https://kldp.org/node/32574



    728x90

    'C++ > 개념정리' 카테고리의 다른 글

    복사 생성자  (0) 2019.01.31
    HWND  (0) 2019.01.29
    데이터 타입  (0) 2019.01.14
    this  (0) 2018.12.27
    friend  (0) 2018.12.21

    댓글

Designed by Tistory.