-
[C++ ] Arrow operatorLanguage/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