반응형

C++ 변수 특징

  • 2진수 표기법, 자릿수 표기법(C++11)
  • 변수의 중간 선언 가능.
  • bool 타입 지원 // C언어(C99)도 가능 했음
  • 구조체 만들때 멤버를 초기화 할 수 있음(C++11)
struct Point
{
int x = 0; // 생성 타임에 멤버 초기화 가능. C++11
int y = 0;
};

int main()

{

struct Point p1; // C Style

Point p2; // C++ Style


int n1 = 0b00; // 2진수로 표현시 C++11

int n2 = 1'000'000; // 자리수가 클 경우 콤마 처럼 ' 으로 구분하여 표시 가능 C++11


int n3 = 0; // 함수 중간에 변수선언 가능.

bool b = true; 

}



일관된 초기화(Uniform Initialization) // C++11

  • 중괄호 초기화(Brace Initialization)라고도 부른다.
  • 직접 초기화(Direct Initialization) : 초기화시에 '=' 을 사용하지 않는다.
  • 복사 초기화(Copy Initialization) : 초기화시에 '=' 을 사용한다.
  • 묵시적 형변환 지원하지 않음

직접 초기화(Direct Initialization)

int n1{ 0 };

int n2{ 0 };

int x[2]{ 1, 2 };

Point p{ 1,2 };


복사 초기화(Copy Initialization)

int n1 = { 0 };

int n2 = { 0 };

int x[2] = { 1, 2 };

Point p = { 1,2 };



예제

int n1 = 3.4; // C Style로 초기화시 묵시적 형 변환되어 OK

int n2{ 3.4 }; // 데이터 타입 오류로 컴파일 Error


char c1{ 100 }; // OK

char c2{ 300 }; // 1Byte 초과로 Error


int n3{}; // 0 기본값으로 초기화됨




별칭(using)

  • typedef : 타입에 대해서 별칭(alias)을 만들때 사용
  • using : 타입과 template의 별칭(alias)을 만들때 사용(사용범위가 넓으므로 typedef 보단 using 권장)
// typedef
typedef int DWORD; // int 타입을 DWORD로 정의
typedef void(*F)(int); // void 함수 포인트 F로 정의

// using
using DWORD = int; // int 타입을 DWORD로 정의
using F = void(*)(int); // void 함수 포인트 F로 정의


int main()
{
DWORD n;
F f;
}


반응형

+ Recent posts