접근지정자
캡슐화의 목적
- 객체 보호, 보안
- C++에서 객체의 캡슐화 전략
- 객체의 상태를 나타내는 데이터 멤버(멤버 변수)에 대한 보호
- 중요한 멤버는 다른 클래스나 객체에서 접근할 수 없도록 보호
- 외부와의 인터페이스를 위해서 일부 멤버는 외부에 접근 허용
멤버에 대한 3가지 접근 지정자
private: 동일한 클래스의 멤버 함수에만 제한
public: 모든 다른 클래스에 허용
protected: 클래스 자신과 상속받은 자식 클래스에만 허용
(*클래스 생성부에서 사용)
(1) 접근 지정은 중복 가능
(2) 디폴트 접근 지정은 private
->위의 두 사진은 같은 의미
(3). 멤버 변수는 private로 지정하는 것이 바람직
인라인 함수
인라인 함수: inline 키워드로 선언된 함수
인라인 함수에 대한 처리
>인라인 함수를 호출하는 곳에 인라인 함수 코드를 확장 삽입
- 매크로와 유사
- 코드 확장 후 인라인 함수는 사라짐
>인라인 함수 호출
- 함수 호출에 따른 오버헤드 존재하지 않음
(오버헤드: 프로그램의 실행 흐름 도중에 동떨어진 위치의 코드를 실행시켜야 할 때 추가적으로 시간, 메모리, 자원이 사용되는 현상)
- 프로그램의 실행 속도 개선
>컴파일러에 의해 이루어짐
인라인 함수의 목적 및 장단점
(장점)
- C++ 프로그램의 실행 속도 향상
(단점)
- 인라인 함수 코드의 삽입으로 컴파일된 전체 코드 크기 증가
EX) 인라인 함수 예시
▼
(컴파일러에 의해 inlint 함수의 코드 확장 삽입)
<인라인 제약 사항>
- inline은 컴파일러에게 주는 일종의 추천 메시지
- 컴파일러가 선택적으로 필요에 따라 inline 수용
- recursion, 긴 함수, static, 반복문, goto 문 등을 가진 함수는 수용하지 X
자동 인라인 함수: 클래스 선언부에 구현된 멤버 함수
- inline으로 선언할 필요 X
- 컴파일러에 의해 자동으로 인라인 처리
- 생성자를 포함, 모든 함수가 자동 인라인 함수 가능
바람직한 C++ 프로그램 작성법
클래스를 헤더 파일과 cpp 파일로 분리하여 작성
- 클래스마다 분리 저장
- 클래스 선언 부 (헤더 파일(.h)에 저장)
- 클래스 구현 부 (cpp 파일에 저장)
- main() 등 전역 함수나 변수는 다른 cpp 파일에 분산 저장
목적: 클래스 재사용
헤더 파일의 중복 include 문제
- 'class' 형식 재정의로 인한 컴파일 오류 발생 가능
객체 포인터
객체에 대한 포인터
- C 언어의 포인터와 동일
- 객체의 주소값을 가지는 변수
포인터로 멤버를 접근할 때
- 객체 포인터 -> 멤버
참고: 황기태의 c++ 프로그래밍
'c++' 카테고리의 다른 글
6주차-객체 배열, 동적 메모리 할당, 객체 배열 동적 생성, this 포인터 (0) | 2020.06.08 |
---|---|
3주차-포인터 (0) | 2020.04.03 |
c++ 2주차(조건문, 반복문, 배열) (0) | 2020.04.01 |
C++ 1단원, 2단원 + 입출력 + 연산자 (0) | 2020.03.25 |