Adaid's Workroom

[C++] C에서 C++로 본문

전공 공부/언어

[C++] C에서 C++로

어데이드 2018. 6. 21. 02:44

내용 출처 - 옥찬호님 자료 요약

깃허브 링크

자료1

자료2

자료3

자료4


cin, cout - I/O 메서드 변화

- 헤더 파일 변화: stdio.h -> iostream

- 함수 변화

  printf -> std::cout

  scanf -> std::cin

- 입출력 형식(%d 등) 지정X

bool - 새로운 자료형

- true/false 개념을 명확히 사용하기 위해 추가된 자료형

auto - 타입 추론 타입 지정자

- 컴파일 타임에 타입 추론하여 결정

- 추론 불가능시 오류

Range-based for - 범위기반 for문

- 컨테이너 요소 개수 무관하게 반복문 수행

(ex) for (auto& i : arr) cout << i;

new, delete - 동적 할당/해제 방법 변화

- 쉬운 문법

  malloc/calloc -> new

  free -> delete

- 주의: new는 delete, new[]는 delete[]로

  단일 객체 vs 배열 객체

nullptr - 실제 널 포인터

- 등장이유: NULL이나 상수 0으로 함수에 인자 넘기는 경우 int형으로 추론될수 있음

- 포인터 변수와 같이 4바이트

- nullptr은 타입이 아님

  실제 타입은 std::nullptr_t

static_cast - 명시적 형변환

- C의 명시적 캐스팅은 플머의 실수를 용납하기 때문에 오류날수도

- 캐스팅의 목적 명확하게 명시하여 오류 방지

- static_cast, dynamic_cast, const_cast, reinterpret_cast 사용

- 캐스트이름<타입>(표현식);

  * static_cast: const 제외 모든 명시적 형변환에 사용

  * dynamic_cast: 기본 타입에 대한 포인터/참조자를 파생타입에 대한 포인터/참조자로 변환

  * const_cast: const 객체를 const가 아닌 타입으로 변환

  * reinterpret_cast: 비트 구성 형식을 저수준에서 재해석

(ex) static_cast<int*>(str);

Scoped enum - 범위 지정 열거체

- C/C++: 기존에서 사용하던 열거형의 문제점 보완

  * 전역 범위로 선언되어 다른 열거체가 중복된 이름 사용불가

  * 서로 다른 열거체 변수끼리 연산 가능

- C++11: 이런 문제점 보완

  * enum 대신 enum class 사용

  * 묵시적 변환X

  * 서로 다른 열거체 변수끼리 연산 불가

(ex) enum class Color { Red, Yellow, Green };

Binary literal, separator - 2진법 표현 방법과 구분자

- C++14: 2진수 표현 방법 추가 -> 0b~

- C++14: 구분자 추가되어 큰 숫자 읽기 쉬워짐

  (ex) 21'4748'3647

std::string - 문자열 자료형

- C: char[] 또는 char*

- C++: std::string 사용

- <string> 헤더파일 추가

Reference - 다른 변수를 가리키는 변수

- 포인터의 간소화 버전(~= 변수 별명)

  * 다른 변수와 동일한 메모리 위치 공유

  * 가리키는 값 사용/레퍼런스에 값 대입 시 &나 *를 추가해야 하는 특별한 문법 필요없음

- 언제나 유용한 메모리만을 가리켜야 함 -> 선언과 초기화를 동시에 해야함

  (ex) int x = 5; int& ref = x;

(ex) void swap(int& a, int& b);

      swap(a,b);

Function overloading - 여러 함수에서 같은 이름 사용 가능

- 규칙: 오버로딩된 함수는

  1. 인수의 개수가 서로 달라야함

  2. 개수가 같은 경우 타입이 달라야함

  3. 리턴 타입만 다른 경우 불가능

Namespace - 이름 충돌 방지

- namespace 이름 {...}

- 중첩해서 사용가능

- A::a : 네임스페이스 A에 있는 변수 a에 접근

- 네임스페이스를 매번 적기 귀찮으면 using 사용

'전공 공부 > 언어' 카테고리의 다른 글

[C++] OOP in C++ (4) (진행중)  (0) 2018.06.23
[C++] OOP in C++ (3)  (0) 2018.06.23
[C++] OOP in C++ (1)  (0) 2018.06.21
[C++] Google C++ 코딩 스타일 정리(작성중)  (0) 2018.01.03
Comments