내일배움캠프 11일차 - C++ 문법 : 잊어먹기 쉬운 것
깃(Git)
C++ 상속클래스 문법
- 부모는 '기본클래스', 자식은 '파생클래스'로 불린다.
- 파생 클래스에서 기본 클래스의 함수를 재정의 시 함수 뒤에 override를 붙이면 재정의 시 코딩 실수에 대해 컴파일 에러로 경고해준다. 때문에 붙여주는 습관을 들이면 좋을 것이다.
멤버 초기화 리스트
- 생성자를 정의하는 또 다른 방법으로 아래 사진처럼 사용한다. 처음 선언할 때만 사용되며, 실행코드 { } 보다 먼저 실행된다.
- 기본 클래스(Base)의 생성자를 가져와 쓸 때는, Base(매개변수)를 멤버 초기화 리스트에 적용할 수 있다.- 기본 클래스의 멤버변수를 파생 클래스 생성자의 멤버 초기화 리스트에서 초기화하려들면 컴파일오류를 일으킬 수 있다. 실행 코드 { }에서 초기화해줘야한다.
클래스 전방선언
- 클래스별로 파일이 분리되었을 경우, 서로가 서로의 클래스를 참조하는 과정에서 필연적으로 먼저 불러와야 하는 클래스가 역순으로 불러와지는 경우가 있다. (예: B.h내 클래스를 참조하는 A.h가 먼저 include됨)
- 이 경우, 전방선언을 통해 해당 개체가 클래스임을 미리 명시하여 컴파일오류를 방지할 수 있다.
또는, 불러오는 시점에서 class 전방선언을 할 수도 있다.
※ 상속 클래스 등을 .h, .cpp 분리해서 정의할 경우 주의사항
- 평소 #include는 cpp파일에서 선언하는것이 원칙이나(컴파일속도, 의존성관리 향상), 파일이 분리되면서 기존 main.cpp에 선언했던 include헤더가 포함되지 않았을 수도 있다.
- 파생클래스에서 기본클래스.h 또는 값자료형 헤더를 부득이하게 선언해야할 필요가 있을때 .h, .cpp 가리지 않고 #include 전방선언해도 된다. #pragma once가 중복선언을 막아주기 때문이다.
- using namespace std 또한 같이 선언하는 것이 좋으나, 코딩테스트 등에서의 실수를 피하기 위해 네임스페이스 선언 없이 "std::"를 같이 쓰는 연습도 하면 좋을 것이다.
댓글
댓글 쓰기