본문 바로가기
Programming/C++

C++ static

by ahhang0k 2021. 4. 21.

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

댓글