c++11의 새로운 자료형
자료형 | 설명 |
---|---|
long long | 64비트 정수 (컴파일러에 따라 약간 다를 수 있음) |
char16_t | 16비트 문자(유니코드 처리를 위한 자료형) |
char32_t | 32비트 문자(유니코드 처리를 위한 자료형) |
auto | 컴파일러가 자동으로 형식을 규정하는 자료형(ex. auto a =10;) |
decltype(expr) | expr과 동일한 자료형(ex. int x=10;deltype(x) y =20;) |
auto 자료형
초깃값의 형식에 맞춰 선언하는 인스턴스의 형식이 자동으로 결정된다.
메모리 동적 할당
malloc(), free() 함수를 대신할 new, delete 연산자 !
new, delete 연산자 내부에서 malloc(), free()함수를 호출한다.그리고 단순히 메모리를 과니하는 이상의 일들을 수행한다.
new 연산자는 malloc()함수와 다르게 "메모리 크기를 정하지 않는다."
형식 *변수이름 = new 형식;
delete 변수이름;
형식 *변수이름 = new 형식[요소개수];
delete[] 변수이름;
참조자 형식
참조자(reference)형식은 C에는 없는 형식으로 포인터와 구조적으로 비슷하다. 그러나 겉으로 드러나는 모습은 전혀 다르다. 그리고 참조자형식은 반드시 초기화해야한다. 또 참조자는 처음 어떤 변수와 짝을 이루게 되면 짝이 달라지지 않는다.
형식 &이름 = 원본;
ex) int &ref = nData ;
참조자 예제
#include "stdafx.h"
#include <iostream>
using namespace std;
void Swap(int &a, int &b){ //매개변수의 형식이 참조형식 !!
int nTemp = a;
a = b;
b = nTemp;
}
int _tmain(int argc, _TCHAR* argv[])
{
int x = 10, y = 20;
Swap(x, y);
cout << "x : " << x << endl;
cout << "y : " << y << endl;
}
범위 기반 for문
반복 횟수는 배열 요소 개수에 맞춰 자동으로 결정
for(auto 요소변수 : 배열명)
{ 반복구문 ...; }
ex) for(auto n : arr){ ...}
하지만 배열의 값을 변경시키기위해서는
for(auto &n : arr)
와 같이 참조자를 요소형식으로 선언하여야한다.
//////잘못된 소스
#include "stdafx.h"
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
int arr[5] = { 10, 20, 30, 40, 50 };
for (auto a : arr){ //값 선언으로는 배열의 원소값을 변경시킬 수없다.
a = a+10;
}
for (auto a : arr){
cout << a << ' ';
}
}
//결과값: 10 20 30 40 50
#include "stdafx.h"
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
int arr[5] = { 10, 20, 30, 40, 50 };
for (auto &a : arr){
a = a+10;
}
for (auto a : arr){
cout << a << ' ';
}
}
//결과값 : 20 30 40 50 60
'C++' 카테고리의 다른 글
C++ 인라인 함수 (0) | 2018.05.02 |
---|---|
C++입출력 속도, 성능 개선 (0) | 2018.04.30 |