ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [C++ ] Arrow operator
    Language/C++ 2022. 8. 3. 23:57

    일반적으로 dot operator의 경우 , Class ,Struct의 member를 참조하기 위해서 많이 사용하고 익숙하다.

     

    Arrow operator에 대해 알아보자.

     

    class foo {
    
        public :
            int member_a = 5;
            int member_b = 3;
        
            void method()
            {
                cout << "Method is called" << '\n';
            }
    };
    
    
    int main()
    {
        foo bar; // Declare foo class
        foo* p_bar= NULL;  // Declare pointer variable of p_foo
        
        p_bar = &bar; // using Ampersand  , assing bar address into p_bar variable.
        (*p_bar).method(); // (*p_bar) means derefence p_bar which is bar 
        cout << "(*p_bar).a : " << (*p_bar).member_a << "\n";
        cout << "(*p_bar).b : " << (*p_bar).member_b << "\n";
        
        p_bar->method(); // Arrow operator는 pointer 변수가 가르키는 Class 변수로 접근. 
        cout << "p_bar->member_a : " << p_bar->member_a << "\n";
        cout << "p_bar->member_b : " << p_bar->member_b << "\n";
    
      
    }

     

    다음과 같은 Code Block 이 있을 때,  foo class를 참조하는 pointer 변수 p_bar 에 대해

     

    깊게 생각할 것도 없이 p_bar -> method() 는 (*p_bar).method()의 syntatic sugar에 불과하다. 

     

    (*p_bar)의 경우 pointer 변수를 dereference 한 것이므로 , 이는 bar 를 가르키게 된다. 

     

     

     

    'Language > C++' 카테고리의 다른 글

    [C++] C/C++ Pointer 변수 크기  (0) 2022.08.02
    [C++] namespace 와 std 의미  (0) 2022.07.30
    [BOJ 10808] 알파벳 개수  (0) 2022.07.30
    [C++] 참조자 vs 포인터  (0) 2022.07.28
Designed by Tistory.