C++정적 구성원 함 수 는 비정 상 구성원 변 수 를 호출 할 수 없습니다(상세 설명)
2099 단어 정적 구성원 함수호출비정 상 구성원 변수
모두 류 의 범주 와 같은 것 이 고 류 의 전체 생존 주기 에 한 부 만 존재 할 수 있다.그러나 비 정적 구성원 변수 와 비 정적 구성원 함 수 는 클래스 의 대상 에 대한 것 입 니 다.
그러나 본질 적 으로 클래스 의 정적 구성원 함수 의 함수 형 삼 에는 기본 적 인 this 지침 이 없어 구체 적 인 실례 대상 의 구성원 을 호출 할 수 없습니다.
다음은 우리 가 테스트 해 보 자.
정적 구성원 함수 에서 정적 구성원 변 수 를 먼저 호출 합 니 다:
#include <iostream>
using namespace std;
class vpoet
{
public:
static int a;
int b;
public:
vpoet(int data)
{
b=data;
}
static void statictestfun1()
{
cout<<"static a="<<a<<endl;
}
};
int vpoet::a=10;
int main()
{
vpoet *V;
V=new vpoet(5);
vpoet::statictestfun1();
return 0;
}
호출 성공,캡 처 는 다음 과 같 습 니 다.현재 정적 구성원 함수 에서 비 정적 구성원 변 수 를 호출 합 니 다.
#include <iostream>
using namespace std;
class vpoet
{
public:
static int a;
int b;
public:
vpoet(int data)
{
b=data;
}
static void statictestfun1()
{
cout<<"static b="<<b<<endl;
}
};
int vpoet::a=10;
int main()
{
vpoet *V;
V=new vpoet(5);
vpoet::statictestfun1();
return 0;
}
컴 파일 하여 오류 알림:대 의 는 정적 구성원 함수 에서 클래스 의 비정 상 구성원 변 수 를 인용 한 것 이다.
사실 여기 서 더 깊이 분석 해 볼 수 있다.
정적 구성원 변수의 함수 형 참 에는 기본 this 포인터 가 클래스 대상 자 체 를 가리 키 지 않 습 니 다.그래서 우리 가 대상 의 비정 상 구성원 변 수 를 호출 할 때 이 변 수 를 식별 할 수 없습니다.
그러나 정적 구성원 변수 에 있어 전체 클래스 에 존재 하고 모든 클래스 대상 에 공유 되 기 때문에 기본 적 인 this 형 인삼 이 없어 도 정적 구성원 변 수 를 식별 할 수 있 습 니 다.
이상 은 여러분 에 게 가 져 온 C++정적 멤버 함수 입 니 다.비정 상 멤버 변 수 를 호출 할 수 없습니다.(상세 설명)모든 내용 을 지원 해 주시 기 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
python이 함수 이름을 통해 함수를 호출하는 몇 가지 장면설명 앞서 시스템 명령을 어떻게 실행하는지 라고 썼다. 시스템 명령을 실행하는 것 외에 우리는 때때로 동적으로python 코드를 실행해야 한다. 경험이 있는 친구들은 내장 함수 eval을 사용하여 이 수요를 실현할 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.