일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 연산자재정의
- time()
- 자바스크립트라이브러리
- react
- 테이블
- new연산자
- 함수표현식
- freiend클래스
- 웹개발
- SQL
- 함수중복
- HTML
- 자바스크립트
- 생성자호출
- 프로그래밍
- this객체
- jQuery
- call by referance
- 랜덤출력
- JS
- C언어
- 객체지향프로그래밍
- 친구함수
- 제네릭 함수
- friend함수
- 데이터베이스
- freiend선언
- 코딩
- 멤버접근허용
- C++
- Today
- Total
Programming Storytelling
정적 변수, static 키워드란? 본문
static 키워드의 대표적인 특징
1.전역변수에서 사용될 때 '내부 연결 속성'을 적용된다.
2.변수가 정의된 소스 파일 내에서 사용 가능함을 의미한다.
3.static 키워드는 블록 내에서 선언된 지역변수에서도 사용할 수 있다.
4.지역변수는 '자동주기'를 가지며 , 정의된 시점에서 생성되고 초기화 되며, 정의 된 블록이 끝나는 지점에서 소멸한다. 5.static키워드를 사용한 지역 변수는 완전히 다른 의미가 있다.
6.static키워드를 사용한 지역 변수는 자동주기에서 정적 주기로 바뀐다.
7.정적변수는 단 한번만 초기화 되고 프로그램 내내 지속된다는 큰 특징을 지닌다.
C++에서 정적 멤버란 클래스에는 속하지만, 객체 별로 할당되지 않고 클래스의 모든 객체가 공유하는 멤버를 의미합니다.
멤버 변수가 정적(static)으로 선언되면, 해당 클래스의 모든 객체에 대해 하나의 데이터만이 유지 관리됩니다.
정적 멤버 변수는 클래스 영역에서 선언되지만, 정의는 파일 영역에서 수행됩니다.
이러한 정적 멤버 변수는 외부 연결(external linkage)을 가지므로, 여러 파일에서 접근할 수 있습니다.
정적 멤버 변수에도 클래스 멤버의 접근 제한 규칙이 적용되므로, 클래스의 멤버 함수나 프렌드만이 접근할 수 있습니다.
하지만 정적 멤버 변수를 외부에서도 접근할 수 있게 하고 싶으면, 정적 멤버 변수를 public 영역에 선언하면 됩니다.
#include <iostream>
using namespace std;
class Person
{
private:
string nmae_;
int age_;
public:
static int person_count_; // 정적 멤버 변수의 선언
Person(const string& name, int age); // 생성자
~Person() { person_count_--; } // 소멸자
void ShowPersonInfo();
};
int Person::person_count_ = 0; // 정적 멤버 변수의 정의 및 초기화
int main(void)
{
Person p("피카츄", 29);
p.ShowPersonInfo();
Person pp("꼬북이", 35);
pp.ShowPersonInfo();
return 0;
}
Person::Person(const string& name, int age)
{
name_ = name;
age_ = age;
cout << ++person_count_ << "번째" << endl;
}
void Person::ShowPersonInfo()
{
cout << " 이름은 " << name_ << "이고, 나이는 " << age_ << "살이다." << endl;
}
일반 멤버 함수의 호출
객체이름.멤버함수이름
정적 멤버 함수의 호출
클래스이름.멤버함수이름
정적 멤버 함수의 특징
1. 객체를 생성하지 않고 클래스 이름만으로 호출할 수 있습니다.
2. 객체를 생성하지 않으므로, this 포인터를 가지지 않습니다.
3. 특정 객체와 결합하지 않으므로, 정적 멤버 변수밖에 사용할 수 없습니다.
상수 멤버 변수
상수 멤버 변수란 한 번 초기화 하면, 그 값을 변경할 수 없는 멤버 변수를 의미한다.
상수 멤버 함수
상수멤버 함수란 호출한 객체의 데이터를 변경할 수 없는 멤버 함수를 의미한다.
'C++' 카테고리의 다른 글
freind 클래스와 함수에 대하여 (0) | 2019.06.12 |
---|---|
복사 생성자(copy constructor) (0) | 2019.06.12 |
랜덤함수 rand(),srand() 에 대하여 (0) | 2019.06.08 |
C언어 기원 C++프로그래밍,무엇이 추가 되었을까? (0) | 2019.06.08 |
함수의 오버로딩과 인라인함수 및 매크로 함수 (0) | 2019.04.16 |