전문가 C++공부
1. 객체지향 언어
C++은 객체지향 프로그래밍(Object Oriented Programing) OPP로 자연스러운 코딩 방법이다.
1. 클래스의 정의
Class는 객체의 특성을 정의한다. c++에서는 클래스는 헤더파일에서 선언을하고, 상세한 정의는 cpp를 통하여
작성을 진행한다.
예시를 들어보자, 항공티켓클래스를 정의를한다. 마일리지에 따른 티켓의 가격을 계산할 수 있고, 승객이 멤버십 가입자인지도 확인할 수 있다. 우선 클래스의 정의는 클래스의 이름을 선언하는 것으로 시작한다.
{} 안에 속성데이터를 저장할 데이터 멤버와 클래스의 행동을 조정할 수 있는 메서드를 선언한다. 각 데이터 멤버와 메서드는 public, protected, private 세가지 접근 권한에 매핑이 된다. public 멤버는 클래스 밖에서 접근이 가능하지만 private 멤버는 클레스 내부에서만 접근이 가능하다. 모든 데이터 멤버를 Private로 만들어 외부에서 접근이 필요 할 경우 전용 게터와
세터를 public으로 만드는것이 좋다. 이런 방식으로 설계하면 내부 데티어 구조를 필요에 따라 바꾸면서 외부 인터페이스를 일관되게 유지할 수 있다.
클래스 명과 같은 이름이면서 리턴값이 없는 메서드는 생성자(Constructor)또는 축약하면 ctor이라 불린다. 이 함수는 객체가 생성될 때 자동으로 호출된다. ~표시로 시작을 하여 클래스명과 같은 메서드는 소멸자(Destructor) 또는 Dtor이라고 한다. 소멸자는 객체가 메모리에서 해제될 때 자동으로 호출된다.
상수 불변의 원칙이 프로그램 전체적으로 전화되고 유지되게 하기 위해서는 데이터 멤버의 변경이 없는 메서드를 명시적으로 const로 정의하는 것이 좋다. 이러한 const 메서드를 인스펙터(inspector)라고 하고 멤버 변경이 있는 메서드를
뮤테이터(Mutator)라고 한다.
2.Vector
Vector 클래스는 C의 배열을 대체하는 것으로, 훨씬 더 유연하고 안전하다.
런타임에 동적으로 항목을 추가하거나 삭제가 가능하고, 그에 따른메모리 할당과 해제도 자동으로 해주기 떄문에 편리하다.
이러한 컨테이너의 항목을 순회하기 위해 반복자(Iterator)라는 개념도 도입한다.
vector<자료형> 변수명 으로 선언하고 <>는 템플릿 파라미터를 받는데 이용한다.
vector는 컨테이너의 일반형으로 어떤 종류의 객체도 담을 수 있다. 단 <>이 안에 객체에 대한 타입을 지정해야한다.
vector에 항목을 추가할 경우에는 push_back() 메서드를 사용한다. auto 키워드를 사용할 시 컴파일러가 반복자의
타입을 자동으로 연역하여 vector<string>::const_iterator가 사용되게 한다.