프로그래밍/c++

객체지향 마무리

오늘의논리 2023. 3. 1. 11:35
728x90

1. struct vs class

  • c++에서는 struct class 종이 한장 차이임
  • struct 기본접근 지정자가 public 이고 class private이다
  • 왜이렇게 했을까? C++ c언어에서 파생되어 발전했기 때문에, 호환성을 지키기 위함
  • struct 그냥 구조체(데이터 묶음) 표현하는 용도
  • class 객체 지향 프로그래밍의 특정 나타내는 용도

 2. static 변수, static 함수(static = 정적, 고정된)

  •  일반 변수와 다르게 특정 객체에 묶여있는게 아닌 클래스에 종속적인 변수가 됨.
  •  초기화 하면 .data, 초기화 안하면 .bss 영역에 있음
  •  일반 함수에서 사용하면 초기화가 맨처음 그 함수, 변수를 사용할때 한번만 됨.
class Marine
{

public:
	int _hp;


    void TakeDamage(int damage)
    {
   	 _hp -= damage;
    }
    static void SetAttack()
    {
        s_attack = 100;
    }


	static int s_attack;

};


int Marine::s_attack = 0;



int main()
{        
	Marin m1, m2;
    Marine::s_attack = 5;
    Marine::SetAttack();


    return 0;

}

이렇게 하면 모든 마린(m1,m2) s_attack 5가되었다가 SetAttack 함수로 100이됨

 

728x90