제가 대학교 1학년 때 [명품 C++ Programming] 교재로 진행되는 C++ 수업에서 배운 내용을 교재와 ppt를 중심으로 정리한 내용입니다.
(2022.9 ~ 2022.12)
당시에 공부를 위해서 HWP 파일로 정리해 놓은 것을 그대로 올립니다.
🍑객체에 대한 이해
세상 모든 것이 객체다
객체는 캡슐화 된다
- 캡슐화 : 객체의 구성 요소들을 캡슐로 싸서 보호하고 볼 수 없게 하는 객체의 장 본질적인 특징 (ex. 알약, TV, 자판기, 카메라, 사람)
캡슐화의 목적
→ 객체 내 데이터에 대한 보안, 보호, 외부 접근 제한
객체의 일부 요소는 공개된다
- 외부와의 인터페이스(객체끼리의 정보 교환 및 통신)를 위해 객체의 일부분 공개
- ex) TV → ON/OFF버튼, 채널조절, 음량 조절 버튼 등이 노출
C++ 객체의 구성
1. 상태 = 멤버 변수 : 객체의 상태를 나타내는 속성
(ex. 채널 → 현재 방송중인 채널, 음량 → 현재 출력되는 소리 크기)
2. 행동 = 멤버 함수 : 행동을 구현한 코드들
(ex. 켜기/끄기, 채널증가/감소)
C++ 클래스와 C++ 객체
- 클래스 : 객체를 정의하는 틀 혹은 설계도. 개발자가 정의 하는 새로운 데이터 타입
- 객체도 실체도 아님
- 멤버 변수, 멤버 함수를 선언하는 곳
- 객체 : 클래스 라는 틀에서 찍어내어, 멤버 변수 메모리와 멤버 함수 코드를 가지고 프로그램이 실행되는 동안 실존하는 실체 혹은 인스턴스
- 클래스는 컴파일이 끝나고 사라지지만, 객체는 프로그램 실행 중 생성되어 멤버 함수 or 멤버 변수가 쓰이기도함
- 객체는 생성될 때 클래스의 모양을 그대로 가지고 탄생
- 멤버 변수와 멤버 함수로 구성
- 각 객체들은 상호 별도의 메모리에 생성
- 하나의 클래스 틀에서 찍어낸 여러 개의 객체 생성 가능
🍑C++ 클래스 만들기
클래스 만들기
- 클래스 선언부와 클래스 구현(정의)부로 구성 → 클래스의 재사용을 위해 분리.
- 다른 파일에서 컴파일 시 클래스의 선언부만 필요
클래스 선언부
class키워드 클래스이름 { }; 형식으로 선언
- 클래스의 모양을 정의 하는 것
클래스 멤버 선언
- 멤버 변수와 멤버 함수로 구성
- 멤버 변수는 클래스 선언부에서 초기화 할 수 없음.
- 멤버 함수는 원형 형태로 선언.
- 멤버 함수의 리턴 타입, 매개 변수 리스트 등이 모두 선언 되어야함.
접근 지정자
private, public, protected 중의 하나
- 디폴트는
private
- 다른 클래스와의 통신을 위해 일부 멤버들을 외부에 공개하기도 하는데, 이때
public 접근 지정자로 선언.
클래스 구현부
- 클래스 선언부에 정의된 멤버 함수의 코드를 구현
- 범위 지정 연산자
::를 사용하여 클래스 이름과 함께 멤버 함수를 기술
→ 같은 이름의 함수가 다른 클래스에 존재 할수 있기 때문
🍑객체 생성과 객체 활용
객체 생성과 객체 이름
객체 타입(클래스 이름) 객체 이름;
- 객체가 생성되면 클래스 크기의 메모리가 할당됨
객체의 멤버 접근