전체 글보기
[C++ 1.5.1] 표준 라이브러리
C++은 표준 라이브러리를 제공한다. 여기에는 코드에서 쉽게 가져다 쓸 수 있도록 구성된 유용한 클래스가 다양하게 정의돼 있다. 클래스를 새로 구현할 필요 없이 이미 만들어진 것들을 곧바로 쓸 수 있다. 표준 라이브러리에서 제공하는 클래스는 고성능으로 튜닝된 것으로 직접 구현한 것보다 성능이 훨씬 뛰어나다. 표준 라이브러리에서 제공하는 클래스 중에서 std::string, std::array, std::vector, std::unique_ptr, std::shared_ptr 등은 이미 앞에서 살펴보았다.
[C++ 1.4.1] 직접 리스트 초기화와 복제 리스트 초기화
이니셜라이저 리스트 이니셜라이저는 다음 두 가지가 있으며, 이니셜라이저 리스트를 중괄호로 묶어서 표현한다. - 복제 리스트 초기화 ㅣ T obj = {arg1, arg2, ... }; - 직접 리스트 초기화 : T obj {arg1, arg2, ... }; Auto를 이용한 초기화 C++17 부터는 auto 타입 추론 기능과 관련하여 복제 리스트 초기화와 직접 리스트 초기화가 크게 달라졌다. C++17 이전에는 복제 리스트 초기화와 직접 리스트 초기화 모두 initializer_list로 처리했다. // 복제 리스트 초기화 auto a = {11}; // initializer_list auto b = {11, 22}; // initializer_list // 직접 리스트 초기화 auto c {11}; /..
[C++ 1.4.0] 유니폼 초기화, 축소 변환
유니폼 초기화 C++11 이전에는 타입의 초기화 방식이 일정하지 않았다. 다음은 원을 정의할 때 한 번은 구조체로, 한 번은 클래스로 작성했다. struct CircleStruct { int x, y; double radius; }; class CircleClass { public: CircleClass(int x, int y, double radius) : mX(x), mY(y), mRadius(radius) { } private: int mX, mY; double mRadius; }; C++11 이전에는 CircleStruct 타입 변수와 CircleClass 타입 변수를 초기화하는 방법이 서로 달랐다. CircleStruct myCircle1 = { 10,10,2.5 }; CircleClass my..
![[C++ 1.3.2] 클래스 사용하기](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FobIqL%2FbtrJWMpJHOJ%2FOD5LTPPBnKzhDAQyK3U721%2Fimg.png)
[C++ 1.3.2] 클래스 사용하기
다음 코드는 이전 장의 AirlineTicket 클래스를 사용하는 에를 보여주고 있다. 여기서 AirlineTicket 객체를 하나는 스택 기반으로, 다른 하나는 힙 기반으로 생성한다. #include #include "AirlineTicket.h" using namespace std; int main() { AirlineTicket myTicket; // 스택 기반 AirlineTicket myTicket.setPassengerName("Sherman T. Socketwrench"); myTicket.setNumberOfMiles(700); double cost = myTicket.calculatePriceInDollars(); cout setHasEliteSuperRewardsStatus(true);..
[C++ 1.3.1] 클래스 정의, 접근 수준(public, private), 생성자(생성자 이니셜라이저), 소멸자
클래스(class) 클래스란 객체의 특성을 정의한 것이다. C++에서 클래스를 선언하는 코드는 주로 헤더 파일(.h)에 작성하고, 구체적으로 구현하는 코드는 소스 파일(.cpp)에 작성된다. 클래스를 이해하기 위해 항공기 티켓에 대한 클래스를 정의해보자. 이 클래스는 비행 마일리지에 따라 티켓의 가격을 계산하고, 우수 등급 회원인지 여부도 표현한다. 우수 등급 회원인지 여부도 표현한다. 접근 수준 클래스를 정의할 때는 먼저 클래스 이름부터 적는다. 그리고 중괄호 안에 이 클래스의 데이터 멤버(속성)와 메서드(동작)을 선언한다. 각각의 데이터 멤버와 메서드마다 public, protected, private 등으로 접근 수준을 지정한다. public으로 지정한 멤버는 클래스 밖에서 접근할 수 있는 반면 p..
[C++ 1.2.6] 타입 추론(auto, decltype)
타입추론이란? 타입 추론이란 표현식의 타입을 컴파일러가 스스로 알아내는 기능이다. 타입 추론과 관련된 키워드로 auto와 decltype가 있다. 1. auto 키워드 auto 키워드는 다음과 같이 다양한 상황에서 사용한다. - 함수의 리턴 타입을 추론 - 구조적 바인딩에 사용 - 표현식의 타입을 추론 - 비타임(non-type, 타입이 아닌) 템플릿 매개변수의 타입을 추론 - decltype(auto)에서 사용 - 함수에 대한 또 다른 문법으로 사용 - 제네릭 람다 표현식에서 사용 변수를 선언할 때 타입 자리에 auto 키워드를 지정하면 그 변수의 타입은 컴파일 시간에 자동으로 추론해서 결정한다. auto x = 123; // x는 int 타입으로 결정된다. 이 예제처럼 int 대신 auto로 쓸 때는..