Written by coh at home
참조변수, 축소변환, auto, decltype 본문
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 |