범용 참조는 주로 템플릿 함수에서 lvalue와 rvalue 참조를 모두 처리할 수 있는 유연성을 제공하기 위해 사용된다. 여기서 `Args&&`는 다음과 같은 특징을 가진다: 1. 타입 추론: `Args&&`는 컴파일러가 인자의 타입을 추론하도록 한다. 인자가 lvalue인지 rvalue인지에 따라 `Args`의 타입이 결정된다. 2. lvalue와 rvalue 처리: `Args&&`는 lvalue 참조와 rvalue 참조 모두를 처리할 수 있다. 이는 함수가 lvalue 참조 (예: 변수) 및 rvalue 참조 (예: 임시 객체)를 모두 효율적으로 처리할 수 있도록 해준다. 3. 완벽한 전달 (Perfect Forwarding): `Args&&`와 함께 `std::forward`를 사용하면 함수에 전..
가변 템플릿 인자는 템플릿 함수나 클래스가 임의의 수와 타입의 인자를 받을 수 있도록 한다. 여기서 `Args`는 가변 인자의 타입들을 나타내는 플레이스홀더 이름이며, 다른 이름으로 대체될 수 있다. 가변 템플릿 인자를 사용하는 방법은 다음과 같다: template void myFunction(Args ... args) { // args를 사용하는 코드 } 이 함수는 어떤 수와 타입의 인자든 받을 수 있다. 예를 들어, `myFunction(1, 2.5, "Hello")`와 같이 호출할 수 있다. template class MyClass { public: MyClass(Args ... args) { // args를 사용하는 생성자의 로직 } }; 이 클래스도 여러 타입과 수의 인자를 받을 수 있는 생성자..
c++ 연습 문제 풀이 첫 포스팅이다! 그 동안 C++ 은 매번 문법을 눈으로만 이해하고, 응~ 어쩔 자바, 어쩔 파이썬, 어쩔 C#~ 이러면서 연습은 1도 안하는 바람에... 머리 속에 있는 C++ 기본 개념들이 완전 엉망진창이 되었다. 요즘은 언리얼이 대세라고 하여, 언리얼 엔진을 좀 공부해볼까 하는데, C++ 공부도 다시 해야할 거 같고... 코딩 테스트 문제들도 좀 풀면서 머리를 말랑말랑하게 만들 필요가 있을 거 같아서 시작해보려고 한다. 참고 문헌은 "코딩 테스트를 위한 자료구조와 알고리즘 with C++" 이며, 책을 보면서 옵시디언 메모장에 한 번 정리한 이후에 마크다운 문서를 블로그에 옮겨 적는 거라 조금 어색할 수가 있는데, 최대한 잡아보겠다. Q1. 학교에서 학생 정보를 관리하는 간단한..
T& at(int index) { if(index < n) { return data[n]; } throw "out of range"; } 와 T* begin() { return data; } const T* begin() const { return data;} T* end() { return data + n; }; const T* end() const { return data + n; } 의 차이점은 뭘까? 둘 다 동일하게 T* data의 인자를 반환하도록 생성할 이유라면, T& begin() { return data[0]; } 와 같이 쓰면 안되나? 찾아보니, 이는 사용 목적의 차이라고 한다. T& at(int index)`에서 참조 사용 1. 안전성과 직접 접근: `at` 함수는 컨테이너의 특정 요소..
C++에서 클래스 멤버 함수의 `const` 버전을 추가하는 경우는 주로 해당 함수가 객체의 상태를 변경하지 않음을 명시하고 싶을 때입니다. 이는 객체의 멤버 변수를 수정하지 않는 "읽기 전용" 함수를 나타내며, 이를 통해 코드의 의도를 더 명확하게 하고, 잠재적 오류를 줄일 수 있습니다. `const` 멤버 함수는 다음과 같은 상황에서 유용합니다: 1. 읽기 전용 접근 보장: `const` 함수는 객체의 멤버 변수를 변경할 수 없습니다. 이로 인해 객체의 상태를 변경하지 않고 정보를 읽거나 계산만 수행하는 함수를 명확하게 표현할 수 있습니다. 2. `const` 객체 사용: `const`로 선언된 객체는 오직 `const` 멤버 함수만 호출할 수 있습니다. 따라서, 객체가 변경되지 않아야 하는 상황에서..
C++에서 포인터 변수와 참조(reference)는 서로 다른 개념이며, 이 두 가지 방식은 변수에 접근하고 조작하는 방법에서 차이가 있다. 포인터 변수 (Pointer Variables) 1. 정의: 포인터는 변수의 메모리 주소를 저장하는 변수이다. 포인터는 그 자체로 주소를 가지며, 이를 통해 다른 변수의 위치를 가리킬 수 있다. 2. 사용법: - 선언: int* ptr; - 초기화: ptr = &variable; (변수 `variable`의 주소를 `ptr`에 할당) 3. *참조 (Dereferencing): *ptr 을 사용하면 `ptr`이 가리키는 주소에 있는 실제 데이터에 접근할 수 있다. 4. 특징: - 포인터는 `nullptr`로 초기화될 수 있으며, 이는 포인터가 어떠한 유효한 메모리 주..
오늘부터 영어 공부를 좀 다시 시작해야겠다. 너무 사용을 안 해서 혀가 굳는 건 물론이고, 이제 잘 들리지도 않는다...ㅋㅋㅋ 가끔씩 듣던 Planet money를 매일 들으며, 쉐도잉 연습도 좀 할 겸 해서 정리를 하려고 한다. 출근 전에는 스크립트를 좀 읽고, 단어를 정리한 뒤에 출근/퇴근길에 들으면서 따라 말해보는 방식으로 진행해보자. 아마 3일에 하나씩 끝내지 않을까 싶은데... 뭐, 시작이 반이다. 오늘의 에피소드: https://www.npr.org/transcripts/1197955840 Why are we so bummed about the economy? : Planet Money Would you say that you and your family are better off or wor..
정말... 정말 열심히 준비했던 시험을 지난 토요일에 보고 왔다. 그래서 시험을 잘 봤냐고...? 아니다. 문제의 수준과 내 공부량을 순수하게 "비교"만 한다면 이 시험은 내가 100점 받아도 기뻐할 수 없을 만큼 쉽게 나온 시험이 맞다. 근데, 너무 많이... 너무 많이 넘어졌다. 문제 수준이 내가 예상했던 수준보다는 한참 밑에 있어서, 오히려 어렵게 나올 걸 예상하고 마지막 3일을 어려운 내용(특히나 법률이나 공격/취약점 등을 정말 한 글자도 빠짐없이 다 외웠다고 자신 있게 말할 수 있다.)만 집중해서 죽어라 판 나는... 진짜 뒤통수 한 대 맞고 겨우 정신 차려서 다 푼... 다 아는 내용인데도 어찌나 떨리던지, iptables 체인을 물어보는 문제에 정책 설명만 채워놔서 6점을 날려먹고.. WPA..
"리액트를 다루는 기술" 공부의 마지막 챕터로 그 동안 공부했던 개념들을 모두 사용하여 간단한 블로그를 만들었다. 백단은 Node koa를 사용하여 구성하였고, 글쓰기는 직접 Editor를 만드는 것이 아닌 npm에서 Quill 라이브러리를 받아 사용하였다. 아직은 많이 부족한 거 같지만, 완전한 리액트 풀스택 개발에 첫 걸음을 내딛었을 뿐이라고 생각한다. 앞으로 리액트를 한글마냥 능숙하게 다룰 때까지 다양한 개인 프로젝트를 해봐야겠다. 좀 많이 늦었지만, 이제야 리액트와 조금 친해진 거 같다. 소스는 아래 링크에 첨부하였으며, 전반적인 상태 관리나 데이터 흐름을 이해하는데 우선 중점을 두고 공부하였기 때문에 따로 주석을 달아놓지는 않았다. Blog Front-end: https://github.com/..
- 인천 구월동 이탈리안 맛집
- react-native
- redux
- react
- 파니노구스토
- redux-thunk
- 정보보안기사 #실기 #정리
- javascript
- 맛집
- AsyncStorage
- 이탈리안 레스토랑
- 인천 구월동 맛집
- Async
- await
- Promise
- Total
- Today
- Yesterday