Written by coh at home

참조변수, 축소변환, auto, decltype 본문

languages/c++

참조변수, 축소변환, auto, decltype

och 2022. 4. 3. 12:44

c++의 변수 종류에 참조 변수라는 개념이 추가된다. 

일반변수, 포인터변수, 참조 변수...

 

참조변수란 대체 무엇일까? 

그냥 &를 이용해서 a의 또다른 이름을 만든다고 생각해도 된다. 

c를 출력해보면 10을 출력하게 되고 포인터변수처럼 asterisk를 이용하지 않아도 된다.

 

그래서 코드를 보면 상당히 직관적이고 간결하다. 

참조변수는 그럼 메모리의 어디에 저장될까?

 

그건 user가 알 수 없다. 그래서 별도 실존하는 것이 아니라고 여겨진다. 

음.. &c를 출력해보면 &a와 같이 나오게 되고 c가 참조하는 값은 immutable하다. 

 

축소변환. narrowing conversion 

 

음.. c++부터 변수 초기화 방식으로 {}를 사용하게 된다. 

이 때 축소변환으로 초기화를 하게 되면 error 가 발생하게 되는데 

데이터가 손실되는 방향을 축소변환이라고 말한다. 

 

음 특이한 것은 정수에서 부동소수로 변환하는 경우 data loss가 발생할 수 있기 때문에 

c++에서는 축소변환으로 간주한다. 

다음과 같은 경우는 손실이 일어나지 않지만 그것과 관계없이 error가 발생한다. 

컴파일 과정에서 손실이 일어나는지 알 수 없기 때문. 그 밑에 상수가 들어가 축소변환 되는 것은 ok

 

Auto

 

편리성과 간결성을 높이기 위해 c++에서 도입되었다. 

음 초기값을 보고 자동으로 type을 결정해주는 것을 말한다. 

시스템 타입 같은 경우 복잡해서 auto를 쓰면 간결성을 가질 수 있고

code 수정할 때도 용이하다. 이건 약간 typedef와 비슷하네. 

 

decltype

 

decltype(a) n{1};

a의 표현식을 받아 같은 type으로 n을 설정해 준다. 

표현식이 실행되는 것은 아니다. 

'languages > c++' 카테고리의 다른 글

문자열  (0) 2022.05.15
[c++]배열, Leetcode26,27  (0) 2022.04.07
bit 연산  (0) 2022.04.04
부동소수 반올림 오차  (0) 2022.04.03
cin, cout 그리고 buffer  (0) 2022.04.03