C++/C++ 기타

C++ 과 C에서 화살표 함수 -> 와 .의 차이에 대해서 알아보겠습니다

kimc 2021. 6. 9. 22:48

 

이번 글을 통해 배워갈 내용

  1.  -> 과 . 의 차이에 대해서 배워보겠습니다.

요약

. 은 클래스의 멤버를 직접 접근합니다.

->은 포인터를 통해 멤버를 접근합니다.

 

다르게 표현하면

a -> b 는 (*a).b와 동일합니다.

 

 

실습

(C에서는 접근제한자를 지우고 Class 대신 Struct를 써주시면 됩니다)

여기 존슨이 있습니다

존슨에는 이름과 나이가 속성변수로 들어가 있습니다.

class Johnson { // 클래스
  public:       // 접근제한자
    int age;    // 속성 변수
    string name;// 속성 변수
};

 

먼저 .을 이용해 존슨에게 나이와 이름을 넣어주고 출력해보겠습니다.

#include <iostream>

using namespace std;

class Johnson { // 클래스
  public:       // 접근제한자
    int age;    // 속성 변수
    string name;// 속성 변수
};

int main()
{
    Johnson js;
    js.age = 10;
    js.name = "Johnson";
    
    cout<<js.age;
    cout<<js.name;
    return 0;
}

결과

10Johnson

 

그다음 ->을 이용해 존슨에게 나이와 이름을 넣어주고 출력해보겠습니다.

#include <iostream>

using namespace std;

class Johnson { // 클래스
  public:       // 접근제한자
    int age;    // 속성 변수
    string name;// 속성 변수
};

int main()
{
    Johnson* js = new Johnson;
    js->age = 10;
    js->name = "Johnson";
    
    cout<<js->age;
    cout<<js->name;
    return 0;
}

결과

10Johnson

 

 

세줄 요약(이것만 기억하시면 됩니다)

 

. 은 클래스의 멤버를 직접 접근합니다.

 

->은 포인터를 통해 멤버를 접근합니다.

 

x->y 은 (*x).y

 

 

오늘도 즐거운 코딩하시길 바랍니다 ~ :)

 

참조 및 인용

Difference between "->" and "." in C - Stack Overflow

https://www.geeksforgeeks.org/arrow-operator-in-c-c-with-examples/

 

728x90