c++의 정적 구성원
어떤 때 는 클래스 의 일부 구성원 이 클래스 자체 와 관련 되 어야 하 며,클래스 의 모든 대상 과 관련 되 는 것 이 아니다.예 를 들 어 클래스 의 모든 대상 이 공유 해 야 하 는 변 수 는 이 럴 때 우 리 는 클래스 의 정적 구성원 을 사용 해 야 한다.
성명 류 의 정적 구성원
정적 구성원 을 설명 하 는 방법 은 키 워드 를 사용 하 는 것 입 니 다.
static
멤버 는static
일 수도 있 고public
일 수도 있다.예 를 들 어 은행 의 계좌 기록 을 나타 내 는 종 류 를 정의 한다.
class Account{
public:
//
//
static double get_rate(){ return interestRate; }
static void set_rate(double r){ interestRate = r; }
private:
static double interestRate;//
// static private
// static
};
Note:역할 영역 연산 자
private
를 사용 하여 정적 구성원 에 게 직접 접근 합 니 다.
double r;
r = Account::get_rate();
정적 구성원 은 클래스 의 어떠한 대상 에 도 속 하지 않 지만 클래스 의 대상 을 통 해 정적 구성원 에 게 접근 할 수 있 습 니 다.
Account ac1;
Account *ac2 = &ac1;
double r = ac1.get_rate();
r = ac2->get_rate();
구성원 함 수 는 정적 구성원 을 직접 사용 할 수 있 으 며,역할 영역 연산 자 를 필요 로 하지 않 습 니 다.정적 구성원 정의
정적 구성원 함수 정의
클래스 의 정적 구성원 함 수 는 클래스 의 외부 에서 도 정의 할 수 있 고 클래스 의 내부 에서 도 정의 할 수 있 습 니 다(정의 와 성명 의 차이 에 주의 하 십시오).
클래스 의 외부 에서 정적 구성원 함 수 를 정의 할 때
::
키 워드 를 사용 할 수 없습니다.static
키 워드 는 클래스 내부 의 정적 구성원 함수 성명 에서 만 사용 할 수 있 습 니 다.그렇지 않 으 면 반복 된다.클래스 의 외부 에서 정적 구성원 함 수 를 정의 할 때 이 함수 가 속 한 클래스 를 가리 켜 야 합 니 다.예 를 들 어:
class Account{
public:
//
//
static double get_rate(){ return interestRate; }
static void set_rate(double r){ interestRate = r; }
static void print();//
private:
static double interestRate;//
// static private
// static
};
// static , 。 。
void Account::print(){
//
}
정적 데이터 구성원 정의정적 데이터 구성원 은 클래스 의 어떤 대상 에 도 속 하지 않 기 때문에 클래스 의 대상 을 만 들 때 정 의 된 것 이 아 닙 니 다.클래스 내부 에서 정적 데이터 구성원 을 초기 화 할 수 없습니다.클래스 의 외부 에서 모든 정적 데이터 구성원 을 정의 하고 초기 화 해 야 합 니 다.
double Account::interestRate = initRate();// static
정적 데이터 구성원 의 클래스 내 초기 화앞에서 언급 한 바 와 같이 클래스 의 정적 데이터 구성원 은 클래스 내부 에서 초기 화 되 어 서 는 안 된다.그러나 정적 데이터 구성원 이 동시에
static
유형 이 라면 클래스 에서 초기 화 할 수 있 습 니 다.상수 정적 구성원 이 클래스 내 에서 초기 화 되 더 라 도 클래스 의 외부 에서 이 구성원 을 정의 해 야 합 니 다.그러나 클래스 외 정 의 는 초기 값 을 지정 할 수 없습니다.클래스 내 에서 초기 값 이 제공 되 었 기 때 문 입 니 다.
정적 데이터 구성원 의 특수 응용 장면
1.정적 구성원 은 모든 대상 에 독립 되 어 있 기 때문에 정적 데이터 구성원 의 유형 은 그 가 속 한 유형 일 수 있 습 니 다.비 정적 데이터 구성원 은 그 가 속 한 클래스 의 지침 이나 참조 로 만 설명 할 수 있 습 니 다.
예 를 들 면:
class Person{
public:
//...
private:
static Person p; // ,
Person *p1; // :
Person &p2 //
Person p3; // : 。
};// ,class Person ,Person ,
2.정적 구성원 을 기본 참조 로 사용 할 수 있 습 니 다.
class Screen{
public:
Screen& clear(char = bkground);
private:
static const char bkground;
}
비 정적 데이터 구성원 은 기본 적 인 실제 인삼 으로 할 수 없습니다.비 정적 데이터 구성원 은 대상 에 속 하기 때문에 대상 의 값 은 실행 할 때 확정 되 지만 기본 매개 변 수 는 컴 파일 할 때 확 정 됩 니 다.즉,기본 매개 변수 가 확 정 될 때 실제 대상 이 만 들 어 지지 않 았 기 때문에 비 정적 데이터 구성원 을 기본 매개 변수 로 사용 할 수 없습니다.그렇지 않 으 면 오류 가 발생 합 니 다.설명:
c++Basic 은'C++Primer 제5 판'에 대한 개인 적 인 정리 와 어 려 운 해석 입 니 다.
더 깊이 알 고 싶다 면 정품 을 지원 하 세 요.
여기 서 상투적인 c++의 정적 구성원 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 c++정적 구성원 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 응원 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
hdu 1717 소수 화 점수 2 (수학)소수 화 점수 2 레이 는 수학 시간 에 선생님 의 말씀 을 듣 고 모든 소수 가 점수 로 표시 되 는 형식 이 라 고 말 했다. 그 는 녹 기 시 작 했 고 곧 완성 되 었 다. 그러나 그 는 또 하나의 문 제 를...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.