아래는 soen에 있는 예제인데요
static키워드를 붙여서 정적멤버 변수임을 선언했다는데요
근데 제가 알기로는 private속성은 절대 고치지 말라고 선언한건데 Count클래스 바깥에서 int Count::Num=0;문장으로 private속성의 Num의 값을 고쳤네요?
이러면 private속성을 한 의미가 없지 안나요?
그리고 static으로 정적멤버 변수를 함수 바깥에서 고칠 수 있다면 당연히 메인함수에서도 정적멤버 변수인 Num를 고칠 수 있을것 같은데
main함수에서는 어떻게 고칠 수 있는지 잘 모르겠네요..
메인함수에서 정적멤버 변수를 고치려면 어떻게 해야 하는지 그리고 저렇게 private속성의 변수를 static키워드로 변수값을 변경가능하게 하면 public선언이나 마찬가지인데 왜 저렇게 변경 가능한 변수를 왜 그냥 public으로 선언하지 않고 굳이 번거롭게 private선언과 static키워드를 혼합해서 사용하는지 그 이유를 알고 싶네요.
#include <iostream>
//int Num=0;
class Count
{
private:
int Value;
static int Num;
public:
Count()
{Num++;}
~Count()
{Num--;}
void OutNum()
{
printf("현재 객체 개수=%d\n",Num);
}
};
int Count::Num=0;
void main()
{
Num=20;
Count C,*pC;
C.OutNum();
pC=new Count;
pC->OutNum();
delete pC;
C.OutNum();
printf("크기=%d\n",sizeof(C));
}