클래스를 가리키는 비정상적인 구성원의 지침

클래스의 구성원 자체도 일부 변수, 함수 또는 대상 등이기 때문에 그들의 주소를 바늘 변수에 직접 저장할 수 있다. 그러면 바늘이 대상의 구성원을 직접 가리키게 할 수 있고 오늘은 이 바늘을 통해 대상의 구성원을 방문할 수 있다.성명 바늘 문장의 일반적인 형식은 다음과 같다. 유형 설명 부호 클래스 이름:::* 바늘 이름;//데이터 구성원을 가리키는 포인터 형식 설명자 (클래스 이름::* 포인터 이름) (매개 변수 테이블) 를 설명합니다.//함수 구성원에 대한 포인터 선언
데이터 구성원 바늘에 값을 부여하는 일반적인 문법 형식은 바늘 이름 = & 클래스 이름: 데이터 구성원 이름;데이터 구성원에 접근할 때 다음과 같은 두 가지 문법 형식을 통해 실현할 수 있다. 대상명.클래스 구성원 포인터 이름 또는 객체 포인터 이름 -> 클래스 구성원 포인터 이름
구성원 함수 바늘은 성명한 후에 다음과 같은 형식의 문장으로 그 값을 부여해야 한다. 바늘 이름=&클래스 이름: 함수 구성원 이름;(상구성원 함수는 일반 구성원 함수와 다른 유형을 가지기 때문에 상구성원 함수에 값을 부여할 수 있는 지침은 성명할 때 const 키워드를 명확하게 써야 한다) 다음과 같은 형식의 문장으로 지침을 이용하여 함수를 호출할 수 있다. (대상명. 클래스 구성원 지침명) (참수표) 또는 (대상지침명->클래스 구성원 지침명)(파라미터표)
다음은 객체에 액세스하는 공유 구성원 함수의 다른 방법입니다.
#include<iostream>
using namespace std;
class point
{
public:
       point(int x=0,int y=0):x(x),y(y){}
       int getx() const {return x;}
       int gety() const {return y;}
private:
    int x,y;
};
int main()
{
    point a(4,5);
    point *p1=&a;// 
    int (point::*funcptr)() const=&point::getx;// 
    cout<<(a.*funcptr)()<<endl;// 
    cout<<(p1->*funcptr)()<<endl;// 
    cout<<a.getx()<<endl;// 
    cout<<p1->getx()<<endl;// 
    return 0;
}

좋은 웹페이지 즐겨찾기