08.21 - TIL

김혁·2025년 8월 22일

TIL

목록 보기
1/84

오늘의 코드카타

연속 펄스 부분 수열의 합

가장 긴 팰린드롬

  • 풀이 방법 : 가운데를 중심으로 확장하는 방식
  • 정리 링크

오늘의 공부

팀 프로젝트 간 트러블 슈팅

학습한 강의

  • 언리얼 멀티플레이 기초 개념(1.1 - 1.4)
    • 프로젝트 생성 및 실습 환경 구축
    • 서버의 종류와 데디케이티드 서버에 대하여

오늘의 CS

C++에서 struct와 class의 차이점이 무엇인가?

공통점

  • 둘 다 사용자 정의 타입을 만들기 위한 키워드
  • 멤버 변수, 멤버 함수, 생성자, 소멸자, 연산자 오버로딩 모두 사용 가능
  • 상속, 접근 지정자 모두 지원
    -> 문법적으로 거의 차이가 없다.

차이점

  1. 기본 접근 지정자
    • struct -> 기본이 public
    • class -> 기본이 private
  2. 상속 시 기본 접근 지정자
    • struct -> 기본이 public
    • class -> 기본이 private
  3. 사용 목적의 차이
    • struct -> 단순 데이터 묶음에 사용
    • class -> 객체지향적 설계에 사용

-> struct는 c언어 스타일처럼 데이터 묶음을 표현하기 위해 만들어짐
-> class는 객체지향적으로 캡슐화를 기본 전제로 설계되어 만들어짐

멤버 접근 변환 규칙

부모 멤버 접근 지정자public 상속 시protected 상속 시private 상속 시
publicpublicprotectedprivate
protectedprotectedprotectedprivate
private접근 불가접근 불가접근 불가

-> public 상속은 그대로 유지되고, private 상속은 다 잠가버린다.

그렇다면 struct가 부모이고, class가 자식일 수 있을까?

  • 문법적으로 거의 동일하기 때문에 가능하다.
  • 다만 struct는 기본 public 상속이고, class는 기본 private 상속이기 때문에 주의해야 한다.
struct Base {
    Base(int v) : value(v) {}

    int value;

    void printBase() {
        cout << "Base Value: " << value << endl;
    }
};

class Derived : Base {
public:
    Derived(int v) : Base(v) {}

    void printDerived() {
        cout << "Derived Value: " << value << endl;
    }
};

int main() {
    Derived d(42);

    d.printDerived();
    // d.printBase();  // private 상속이라 외부에서 접근 불가

    return 0;
}

OOP의 4가지 특징

  1. 상속(Inheritance)
    • 기존의 클래스를 재활용하여 새로운 클래스를 만들 수 있음
  2. 추상화(Abstraction)
    • 불필요한 세부 사항들을 제거하고 가장 본질적이고 공통적인 부분만을 추출하여 표현
    • 객체의 공통적인 속성과 기능을 추출하여 정의하는 것
  3. 캡슐화(Encapsulation)
    • 서로 연관되어 있는 속성과 기능들을 하나의 캡슐로 만들어 데이터를 외부로부터 보호
    • 데이터 보호 : 외부로부터 클래스에 정의된 속성과 기능들을 보호
    • 데이터 은닉 : 내부의 동작을 감추고 외부에는 필요한 부분만 노출
  4. 다형성(Polymorphism)
    • 어떤 객체의 속성이나 기능이 맥락에 따라 다른 역할을 수행할 수 있음
profile
게임 개발자를 향해..

0개의 댓글