C++ 기초

코딩 기초 17편 _ C++ 범위 지정 연산자와 멤버 포인터 연산자 예제 코드 및 설명

모르는게 없는 지식인 2023. 4. 18. 22:50
반응형

안녕하세요?

지식아일랜드의 모르는게 없는 지식인 입니다.

오늘은 C++ 코딩의 범위 지정 연산자(Scope resolution operator)와

멤버 포인터 연산자(pointer-to-member operator)에 대해 설명드리겠습니다.

 

 

 

범위 지정 연산자(Scope resolution operator)
#include <isotream>

using namespace std;

int x = 10;  // 전역 변수 선언

int main() {
   int x = 5;  // 지역 변수 선언
   cout << "지역 변수 x의 값: " << x << endl;
   cout << "전역 변수 x의 값: " << : :x << endl;  // scope resolution operator
   return 0;
}

 

이 예제 코드는 ': :' 스코프 결정 연산자를 사용하여 전역 변수와 지역 변수를 구별하는 방법을 보여줍니다.

 

위 코드에서 'int x = 10;'으로 전역 변수 'x'가 선언됩니다.

'main()' 함수 안에서 'int x=5;'로 지역 변수 'x'가 선언됩니다.

 

'cout << "지역 변수 x의 값: " << x << endl; ' 라인은 'main()' 함수 안에서 선언된 지역 변수 'x'의 값을 출력합니다.

이 값은 '5'입니다.

 

'cout << "전역 변수 x의 값: " << : :x << endl;' 라인은 전역 변수 'x'의 값을 출력합니다.

이 값은 '10'입니다. ': :' 스코프 결정 연산자를 사용하여 전역 변수 'x'를 지정하였습니다.

 

결과적으로, 위 코드는 다음 출력을 생성합니다:

지역 변수 x의 값: 5
전역 변수 x의 값: 10

 

즉, 전역 변수 'x'와 지역 변수 'x'는 이름이 같지만 서로 다른 변수입니다.

': :' 스코프 결정 연산자를 사용하여 전역 변수와 지역 변수를 구별할 수 있습니다.

 

 

멤버 포인터 연산자(pointer-to-member operator)
#include <isotream>

using namespace std;

class MyClass {
public:
    int x;
    void myFunction(int y) {
       cout << "x = " << x << ", y = " << y << endl;
    }
};

int main() {
   MyClass obj;
   obj.x = 10;
   void (MyClass: : *ptr)(int) = &MyClass: :myFunction;
   (obj.*ptr)(20);
   return 0;
}

 

이 예제 코드는 클래스 멤버 함수의 포인터를 사용하여 클래스의 인스턴스에서 함수를 호출하는 방법을 보여줍니다.

위 코드에서 'MyClass' 클래스는 'int x' 데이터 멤버와 'void myFunction(int y)' 멤버 함수를 가집니다.

 

'main()' 함수에서 'MyClass'의 인스턴스 'obj'를 만들고 'obj.x = 10;'으로 'x' 값을 할당합니다.

'void (MyClass: :*ptr)(int) = &MyClass: :myFunction; ' 라인에서,

'MyClass'의 멤버 함수 포인터 'ptr'을 선언하고 'MyClass: :myFunction'의 주소를 할당합니다.

 

'(obj.*ptr)(20); '라인은 'obj'의 멤버 함수 'myFunction'을 호출합니다.

포인터 연산자 '.*'는 'obj'의 멤버 함수를 호출할 수 있도록 합니다.

이 호출은 'obj.x'와 '20'을 인자로 하여 'myFunction'을 호출하고 그 결과를 출력합니다.

 

결과적으로, 위 코드는 다음 출력을 생성합니다:

x = 10, y = 20

즉, 클래스 멤버 함수의 포인터를 사용하여 클래스의 인스턴스에서 함수를 호출할 수 있습니다.

포인터 연산자 '.*'를 사용하여 인스턴스의 멤버 함수를 호출할 수 있습니다.

 

 

 

 

어떠셨나요?

C++ 범위지정 연산자와 멤버 포인터 연산자에 대해 설명드렸는데요.

복잡해보일 순 있어도 하나하나 천천히 따라하시다 보면 금방 이해되실 거에요.

그럼 저는 다음 시간에 또 유익한 정보로 돌아오겠습니다!

반응형