오늘의 코드카타
다단계 칫솔 판매
- 추천인을 통한 트리 구조
- 종료 조건 잘 찾기
-> 문제 풀이
오늘의 공부
학습한 강의
- RPC (Remote Procedure Call) 기초
- Property Replication 기초
정리 노트
오늘의 CS
OOP에 대하여
- 객체지향 프로그래밍(Object-Oriented Programming)의 약자
- 프로그램을 객체라는 단위로 나누어 설계하고 구현하는 방법론
- 객체 = 속성(데이터) + 행동(메서드)
OOP의 4대 특징
- 상속 - 기존 클래스를 확장하여 새로운 클래스를 만듬
- 추상화 - 중요한 정보만 드러내고, 불필요한 구현은 숨기는 것
- 캡슐화 - 데이터와 메서드를 하나의 객체로 묶고, 외부에서 접근을 제한하여 데이터를 보호
- 다형성 - 같은 이름의 메서드가 상황에 따라 다르게 동작할 수 있는 것
다형성에 대하여
- 정적 다형성
- 컴파일 시점에 어떤 함수가 호출될지 결정됨
- 함수, 연산자 오버로딩, 템플릿
- 동적 다형성
- 런타임 시점에 어떤 함수가 호출될지 결정됨
- 가상 함수, 오버라이딩
오버로딩 vs 오버라이딩
- 오버로딩
- 함수 이름은 같지만, 매개변수가 다름
- 정적 다형성이기 때문에, 컴파일 시점에 결정됨
- 오버라이딩
- 부모 클래스의 함수를 자식 클래스에서 다시 정의
- 동적 다형성이기 때문에, 런타임 시점에 결정됨
virtual + override 키워드 사용
가상 함수 vs 순수 가상 함수
- 가상 함수
- 부모 클래스에서
virtual 키워드를 붙여 선언한 함수
- 자식 클래스에서 재정의를 통해 객체의 실제 타입에 따라 호출되는 함수가 결정됨
- 반드시 구현이 되어 있어야 함
- 자식 클래스에서 재정의하지 않아도 그대로 사용 가능
- 순수 가상 함수
- 부모 클래스에서
= 0으로 선언하는 가상 함수
- 함수의 인터페이스만 정의하고 구현은 하지 않는 함수
- 반드시 자식 클래스에서 구현해야 사용 가능
- 순수 가상 함수가 하나라도 있으면, 그 클래스는 추상 클래스(객체 생성 불가)가 됨
- 순수 가상 함수를 구현하지 않았을 때 발생하는 에러
- 런타임 에러 - pure virtual function call