Adaid's Workroom
[C++] C에서 C++로 본문
내용 출처 - 옥찬호님 자료 요약
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 |