제목을 보고 당황스러운 사람들이 꽤 많을것이라고 생각할 것이다. 누가 뭐래도 Javascript 언어의 대세는 Typescript 이기 때문이다. 그런데도 이 글을 쓰는 이유는 왜 Javascript 에서 Typescript 로 넘어가는지 생각해보는 시간을 갖기 위해서다. Typesciprt와 Javascript 누가뭐래도 Typescript 를 사용하는 이유는 Type 을 제공하지 않는 Javascript 에서 형식을 지정할 수 있기 때문이다. 왜 굳이 Type 이 필요한지 의문이 들 수 있는데, Java 와 같은 형식이 있는 언어를 사용하던 개발자들에게 Type 이 없다는 것은 낯설고 거북스러울 수 밖에 없다. 그런 개발자들에게 Typescript 는 축복일 수 밖에 없다. 무엇보다도 형식(Type)..
이전 포스트에서는 auto 를 써야하는 이유를 보았다면 이번 글에서는 auto 를 사용할 때, 주의해야하는 점을 알아보도록 하자. std::vector::reference vector::reference 가 무엇인지 아는 사람은 드물것이다. 먼저 vector 에 대해 생각해보자. bool 형식을 원소로 갖는 배열을 의미한다. 여기서 bool 의 특징을 생각해보자. bool 은 true, false 만 저장하는데도 속도를 위해 1byte 의 크기를 갖고 있다. 그런데 우리는 bool 배열을 사용할 것이기 때문에 굳이 1byte만 사용하지 않아도 된다. 1bit에 1개의 원소를 저장해도 아무런 문제가 없다. 이를 bool 처럼 사용하게 해주는 컨테이너가 바로 vector::reference 이다. 여기서 a..
처음 C++ 에서 auto 라는 키워드를 알게 되었을 때, 'auto가 있어서 편하다' 라는 생각보다는 왜 필요한지 의문이 든 적이 있을 것이다. 타입을 알아서 지정해준다는 장점 하나만으로 쓰기에는 auto를 사용함으로써 타입을 알아내기 힘들다는 생각이 들게된다. 대표적으로 처음 javascript 나 python 을 사용하게 되면 타입을 알지 못해 생기는 귀찮은 일들이 생긴다. 그러나 auto 는 이를 감수할 충분한 가치가 있다. 어떠한 장점들이 있는지 알아보자. 초기화를 빼먹는 실수 종종 생길 수 있는 실수로 선언만하고 초기화를 하지 않는 경우가 생길 수 있다. 이런 실수 때문에 예상치 못한 문제들이 발생할 수 있어 항상 조심해야한다. 그런데 만약 auto를 사용했다면 컴파일러가 에러를 발생시켜 실수..
decltype 이라는 키워드는 객체가 주어졌을때, 그 객체의 타입을 알려준다. 예시를 보자. const int i = 0; // decltype(i)는 const int MyClass object; // decltype(object)는 MyClass 위와 같이 객체의 타입을 알려주는데, 가끔 생각한대로 동작하지 않는 경우가 있다. 특이한 작동 방식 먼저 코드를 보자. template auto authAndAccess(Container& c, Index i) -> decltype(c[i]) { authenticateUser(); return c[i]; } 위에서 보이는 함수처럼 auto 와 decltype 을 이용한 방식을 후행 반환 형식이라고 한다. 후행 반환 형식으로 선언한 함수의 반환 타입은 dec..
auto 의 형식 연역 규칙은 template 과 거의 모든 부분이 일치한다. 그러므로 항목 1을 먼저 보기를 추천한다. https://pppgod.tistory.com/14 불러오는 중입니다... template 과 차이가 생기는 부분은 바로 균일 초기화(Uniform initialization)를 사용하는 경우이다. int x1 = 27; int x2(27); int x3 = { 27 }; // Uniform initialization int x4{ 27 }; // Uniform initialization 여기서 int 를 auto 로 변경해보자. auto x1 = 27; // int auto x2(27); // int auto x3 = { 27 }; // std::initializer_list au..
- Total
- Today
- Yesterday
- C++11
- 보편 참조
- Override
- CPP
- Perfect
- async
- Effective
- Join
- Unreal
- 보편참조
- MOVE
- Future
- Forwarding
- 포인터
- C
- std::forward
- C++14
- thread
- auto
- Overloading
- Effective Modern C++
- forward
- const
- Modern
- detach
- std::move
- 다이소
- C++
- 발아시기
- 람다
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |