struct와 class, 그리고 객체지향

김펭귄·2025년 5월 1일

C++

목록 보기
14/20

1. 객체와 클래스의 개념

  • 객체란?
    • 변수(상태)와 함수(행동)를 묶은 소프트웨어 덩어리
    • 예: 캐릭터는 체력, 레벨(변수) + 공격, 방어(함수)로 구성
  • 절차지향 vs 객체지향
    • 절차지향: 데이터를 함수에 계속 전달
    • 객체지향: 데이터와 행동을 하나의 객체로 묶어, 객체가 스스로 행동
  • 캡슐화(Encapsulation)
    • 객체의 내부 상태(멤버 변수)는 외부에서 직접 접근하지 못하게 하고,
      오직 멤버 함수(메서드)를 통해서만 접근/수정 가능
    • 장점: 내부 구현을 몰라도 객체를 사용할 수 있음, 유지보수와 확장성 향상

2. 클래스의 구조

  • 클래스는 객체의 설계도
    • 객체(instance)는 클래스를 통해 만들어짐
  • 멤버 변수, 멤버 함수
    • 멤버 변수: 객체의 상태(데이터)
    • 멤버 함수: 객체의 행동(동작)
  • 접근 지정자
    • private: 클래스 외부에서 접근 불가(캡슐화) / 같은 클래스라면 다른 객체여도 접근 가능
    • public: 외부에서 접근 가능(인터페이스 제공)
    • protected: 외부에서는 접근 못하나, 상속받은 자식클래스에서는 접근 가능

3. struct와 class 비교

  • 공통점
    • 멤버 변수, 멤버 함수, 생성자/소멸자, 상속 등 모두 지원
  • 차이점
    • struct
      • 기본 접근 지정자가 public
      • 데이터만 저장하는 단순 구조, 외부에 모두 공개해도 무방할 때
      • C와의 호환, 값 객체, DTO 등에 사용
    • class
      • 기본 접근 지정자가 private
      • 멤버 변수 보호, 행동(메서드) 중심, 캡슐화와 정보 은닉 필요할 때
      • 객체지향 설계, 복잡한 동작, 유지보수와 확장성 고려
profile
반갑습니다

0개의 댓글