| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| 16 | 17 | 18 | 19 | 20 | 21 | 22 |
| 23 | 24 | 25 | 26 | 27 | 28 | 29 |
| 30 |
- 반복문
- 비트연산자
- 자바코드
- 코딩
- 2차원배열
- C++
- 변수
- 산술연산자
- 1차원배열
- 프로그래밍
- 메서드오버로딩
- this참조변수
- 포인터연산자
- 포인터
- 부동소수점
- C++코딩
- 자바클래스
- 자바메서드오버로딩
- 자바코딩
- 코딩독학
- 고정소수점
- 제어문
- 코딩기초
- C++상수
- 자바
- 증감연산자
- 기초코딩
- 클래스선언
- Java
- 조건문
- Today
- Total
지식아일랜드
코딩 기초 17편 _ C++ 범위 지정 연산자와 멤버 포인터 연산자 예제 코드 및 설명 본문
안녕하세요?
지식아일랜드의 모르는게 없는 지식인 입니다.
오늘은 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++ 범위지정 연산자와 멤버 포인터 연산자에 대해 설명드렸는데요.
복잡해보일 순 있어도 하나하나 천천히 따라하시다 보면 금방 이해되실 거에요.
그럼 저는 다음 시간에 또 유익한 정보로 돌아오겠습니다!
'C++ 기초' 카테고리의 다른 글
| 코딩 기초 19편 _ C++ 코딩 제어문 조건문 if/else if/else 문과 switch문에 대하여 (1) | 2023.04.20 |
|---|---|
| 코딩 기초 18편 _ C++ 코딩 제어문 조건문(if, if/esle) 설명과 예제 코드 (0) | 2023.04.19 |
| 코딩 기초 16편 _ C++ sizeof 연산자와 포인터 연산자(point operator)에 대해서 (0) | 2023.04.17 |
| 코딩 기초 15편 _ C++ 삼항 연산자(Ternary operator)와 컴마 연산자(Comma operator) (0) | 2023.04.16 |
| 코딩 기초 14편 _ C++ 비트 연산자(Bitwise operator)의 종류와 예제 (0) | 2023.04.15 |