Static
- 객체를 많이 만들어도 1개
- 객체 이름으로 많이 만드는건 의미가 없고 공간만 낭비할 것 같을떄 사용
- 클래스이름::static변수 or 함수
ex 1)
#include <iostream>
using namespace std;
class Circle {
private:
static int numOfCircles;
int radius;
public:
Circle(int r = 1); //디폴트 생성자
~Circle() { numOfCircles--; } //소멸될때 마다 -1씩
double getArea() { return 3.14 * radius * radius;}
static int getNumOfCircles() { return numOfCircles; }
};
Circle::Circle(int r) {
radius = r;
numOfCircles++;
}
int Circle::numOfCircles = 0;
int main() {
//객체 배열이므로 생성자가 10번 돌아감 그럼 계속 numOfCircles++가 증가됨
Circle* p = new Circle[10];
cout << "생존하고 있는 원의 개수= " << Circle::getNumOfCircles() << endl;
delete[]p;
cout << "생존하고 있는 원의 개수= " << Circle::getNumOfCircles() << endl;
Circle a;
cout << "생존하고 있는 원의 개수= " << Circle::getNumOfCircles() << endl;
Circle b;
cout << "생존하고 있는 원의 개수= " << Circle::getNumOfCircles() << endl;
return 0;
}
'Programming > C++' 카테고리의 다른 글
C++ 입출력스트림 (0) | 2021.04.23 |
---|---|
C++ 상속 - 업캐스팅, 다운캐스팅, protected 접근지정자 (0) | 2021.04.21 |
C++ 얕은복사 깊은복사 (0) | 2021.04.21 |
C++ 참조자 (0) | 2021.04.20 |
C++ 문자열 string 실습 (0) | 2021.04.20 |
댓글