본문 바로가기
C++/수업 내용

[ C++ 3일차 ] 상속, 객체와 포인터의 관계, virtual 함수, 연산자 오버로딩

by 왹져박사 2024. 12. 27.

 

**개념의 자세한 내용이 아닌 기존 독학 내용을 제외한 강의에서 새롭게 알게 된 내용들을 정리하였다.

 

복습 내용 ~

얕은 복사는 원본과 같은 주소 값을 가리킨다. 

깊은 복사는 원본 값을 다른 주소에 복사하여 저장하는 것. 

따라서 얕은 복사 시, 원본은 메모리 해제에 주의해야 함. 

~

 

접근 제한자 protected 

확장가능성을 염두에 두고 사용하는 접근 제한자이다. 

이 때문에, 많은 프로그램에서 protected를 많이 사용하였지만, 결과적으로 확장하지 않는 경우가 많았다고 한다. 

따라서 요즘은 과도하게 확장을 고려하지 않고, 확장해야 할 때가 온다면 수정하는 추세라고 한다. 

 

소스파일(.cpp)과 헤더파일(.h) 이동 단축키

같은 이름의 소스파일과 헤더파일은 ctrl + k + o로 이동이 가능하다. 

 

include 디렉토리 추가하기

속성 페이지의 "추가 포함 디렉터리"에서 원하는 디렉토리 추가 가능. 

위 사진과 같이 지정해주면 해당 디렉토리의 파일을 #include " " 혹은 #include < >로 추가할 수 있다. 

<>가 범위가 더 적다. 

 

 

가상함수, virtual과 override

virtual const char* GetName() override { return name; }

위와 같은 형식으로 사용한다. 

이 때, override는 cpp에서는 강제가 아니다. (Java, C#에서는 강제)

하지만 사용하는 이유는, 실수 방지와 가독성을 위하여이다. 

 

 

순수 가상 함수 (Pure Virtual Function)

virtual const char* GetName() = 0;

위와 같은 형식으로 사용한다. 

순수 가상 함수의 목적은 해당 함수 구현을 자식에 강요하는 것이다. 

C#의 interface와 같다. 추상클래스

C#의 interface와는 다르게 변수나 구현을 자식에게 넘겨주는 것도 가능하다. 

C#은 property만 가능하다.