C++ , C와 무엇이 다를까


c++11의 새로운 자료형

자료형설명
long long64비트 정수 (컴파일러에 따라 약간 다를 수 있음)
char16_t16비트 문자(유니코드 처리를 위한 자료형)
char32_t32비트 문자(유니코드 처리를 위한 자료형)
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

+ Recent posts