일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- 자료구조
- a tour of go
- Docker
- 운영체제
- JUCE 튜토리얼
- go channel
- tour of go
- Nebula
- 공룡책
- 리듬게임
- C++ library
- JUCE
- 알고리즘
- OS
- C언어
- vim-go
- C++
- JUCE라이브러리
- C++ gui 라이브러리
- 연결리스트
- go
- 코딩
- BOJ
- gui
- LOB
- 백준
- C++ gui
- c++ heap
- 프로그래밍
- JUCE library
Archives
- Today
- Total
CafeM0ca
[C++]class static 멤버변수 본문
반응형
static을 C에서 재귀함수에서 전역변수 대신 지역변수로 선언하여 사용하고 하는데 책을 읽던 중 재밌는 사실이 있더라
static은 프로그램이 종료할 때 까지 남아있다.
1 2 3 4 | void Function(){ static int n=1; n++; } |
Function함수는 n값을 실행시킬때마다 1씩 증가시킨다.
class에서 멤버변수로 static선언을 하면 어떻게 될까.
1 2 3 4 5 6 7 8 | class Student{ private: char *name; int age; static int total; public: //생략 }; | cs |
Student라는 객체를 만들었고 이름과 나이를 저장할 수 있다. 여기서 total은 학생 수를 나타낸다.
1 2 3 4 5 6 7 | int main(void){ Student s1; Student s2; Studnet s3; return 0; } | cs |
메인함수에서 Student 객체를 3개를 생성했다. 각각의 객체들은 name과 age를 갖겠지만 total을 공유한다! 즉, name과 age는 학생이 3명이므로 각각 3개씩 존재하지만 total은 1개다.
static member function은 this pointer가 없다. 이유는 각자 잘 생각해보자. 왜냐하면 this는 owner가 있는데 가리키는건데 static은 누구의 것도 아니다.
또한 private나 protected의 static member data나 non-static member data에 접근 할 수 있다.
int main()
{
std::cout << "It is possible. Becasue WhoAmI() is static func!" << std::endl;
Student::WhoAmI();
return 0;
}
반응형
'Programming > C++' 카테고리의 다른 글
[C++]boost라이브러리 설치와 컴파일 (0) | 2018.01.25 |
---|---|
[C++]형변환(typecasting) (0) | 2018.01.22 |
[C++]mutable (0) | 2018.01.04 |
[C++]템플릿 (0) | 2018.01.03 |
[C++] 런타임 과정에서의 입력 값 (0) | 2017.12.02 |
Comments