목록Categories (1096)
KoreanFoodie's Study
함수의 오버로딩 (function overloading) 함수의 오버로딩은, 인자로 들어오는 변수의 타입에 따라 이름이 같은 함수들 중 적합한 함수를 호출해 주는 것을 의미한다. 이때, 인자를 찾는 과정은 다음과 같다. 1 단계 : 자신과 타입이 일치하는 함수를 찾는다. 2단계 : 정확히 일치하는 타입이 없는 경우, 아래와 같은 형변환을 통해 일치하는 함수를 찾는다. Char, unsigned char, short 는 int로 변환된다. Unsinged Short는 int의 크기에 따라 int 혹은 unsigned int로 변환된다. Float는 double로 변환된다. Enum은 int로 변환된다. 3단계 : 위와 같이 변환해도 일치하는 것이 없다면 아래의 좀 더 포괄적인 형변환이 일어난다. 임의의 숫..
객체란? 객체는 인스턴스 변수(instance variable)과 인스턴스 메소드(instance method)로 이루어져 있다. 클래스 클래스는 객체를 찍어내는 '설계도'이다. 클래스 내부의 변수와 함수를 각각 멤버 변수(member variable)과 멤버 함수(member function)이라고 부른다. 멤버 변수와 함수는 접근 지정자를 설정할 수 있다. public : 외부에서 접근 가능 protected : 상속된 클래스만 접근 가능 private : 외부에서 접근 불가능 사실 C++에서 클래스와 구조체의 유일한 차이는 바로 접근 지정자에 있다!
new와 delete c에 malloc과 calloc이 있다면, C++에는 new와 delete가 있다. int* p = new int; *p = 10; delete p; 만약 지역변수를 delete로 해제하려 한다면 Heap이 아닌 공간을 해제하려 한다는 경고 메시지가 나타난다. 컴파일러는 변수를 가까운 곳에서 찾는다. int a = 4; { std::cout
참조자 (레퍼런스) 레퍼런스(reference)는 & 기호를 이용해서 표기한다. #include int main() { int a = 3; int& another_a = a; } 참조자는 별명, 즉 또다른 이름이다. 레퍼런스는 반드시 정의 시 누구의 별명이 될 것인지 지정해야 한다. 또한, 레퍼런스가 한 번 별명이 되면 절대로 다른 이의 별명이 될 수 없다! int a = 10; int& another_a = a; int b = 3; another_a = b; 제일 마지막 줄은, 실제로 "a=b"와 같은 의미를 지닌다. 또한, 레퍼런스는 메모리 공간 속에 존재하지 않을 수도 있다. 이는 레퍼런스를 위해 새로운 공간을 할당할 필요가 없을 수도 있다는 것이다. 참조자의 참조자? int a = 1; int& ..
이름 공간 (namespace) namespace는 정의된 객체가 어디 소속인지를 지정해준다. #include "header1.h" #include "header2.h" int main() { header1::foo(); header2::foo(); } 위의 예시처럼, header1과 header2에 같은 이름의 함수 foo( )가 정의되어 있더라도 namespace를 사용하면 구분해서 사용할 수 있다. 또한, "using namespace std;"와 같은 방식은 추천하지 않는다. std에는 수많은 함수들이 포함되어 있기 때문에, 충돌이 일어날 수 있기 때문이다. 이름 없는 이름 공간 이름 없는 이름 공간을 설정할 경우, 정의된 것들은 해당 파일 안에서만 접근할 수 있게 된다. 이 경우 마치 stati..
가치란 무엇인가. 무엇을 가치있다고 정의할 수 있을까. 비트코인이 처음 열풍이 불었을 때를 생생히 기억한다. 무엇이 가치 있길래 사람들은 데이터 쪼가리에 그리도 열광하는 것인가. 나 또한 비트코인 기술서적을 읽으며, 실제 투자도 하고 글도 쓰며 스타트업에도 기웃거렸다. 너무나도 궁금했기에. 당췌 그게 무엇이길래 그리도 가치가 있다고 하는지 알아야겠다고 생각했었다. 하지만 아무리 기술이 훌륭하다 한들, 결국 가치는 인간이 정하는 것이었다. 상호간의 합의, '이것은 가치가 있는 것이다'라는 공통의 신뢰가 무에서 유를 창출해내고 있었다. 출퇴근길을 책임지는 버스 유리창에는, 오늘도 명품 세일을 홍보하는 스티커가 덕지덕지 붙어있다. 명품은 정말로 가치가 있는 것일까. 억 소리가 나는 돈을 지불할 정도의 값어치가..
인생은 혼자다. 그렇기에 더욱 더 사람이 필요하다. 사람 인(人)이라는 한자를 해부하며 진부한 이야기 보따리를 풀고 싶은 것이 아니다. 다만 외로움에 대해서 한 번쯤 생각해 볼 필요가 있다는 걸 말하고 싶었을 뿐이다. 인간의 외로움이라는 것은 참으로 복잡 미묘해서, 나는 그것을 영원히 충족되지 못할 근원적인 공허함으로 정의내렸다. 정말로, 외롭지 않은 사람이 존재할 수 있는가. 수많은 사람들은 오늘도 다른 사람을 만난다. 눈을 마주치고, 이야기를 나눈다. 웃고 떠들고 포옹하고, 교감한다. 뜨거우면서도 차가운, 가까우면서 먼 관계를 잘도 맺는다. 하지만 그들의 하소연은 멈출 줄을 모른다. 사랑을 하고 있음에도 고독하다는 불편한 투정과, 사랑받고 있지 않음에서 오는 환상통을 느낀다는 우울한 푸념. 그리고 사..
까먹기 전에 적어두는 나의 흑역사들. 1. 영어가 통하지 않는 홍콩 음식점 2. 저렴했던 서민형 일본 회전초밥 3. 극한의 직업정신으로 무장한 메이드 카페 4. 대2병 시절 갔던 벼리캠프의 주루마블 To Be Continued.
먼저 Get Control Rotation을 구한 후, Make Rotator로 degree로 변환된 값을 만든다. 방향 벡터를 추출하고, Normalize를 해 준 뒤, Add MovementInput과 연결시키면 끝. 추후 달리기 기능을 구현할 텐데, 속력으로 동작을 구분지으면 된다. Character Movement: Walking에서 Max Walk Speed를 조정해 속력을 결정하자. 뛰기의 경우, 위의 Max Walk Speed 를 조정해 주기만 하면 된다. 액션 매핑에서 Run을 추가하고, 다음과 같이 만들어준다.
진중함은 필수이고, 유머러스함은 선택이다. 최근 시간에 대한 이야기를 많이 적었다. 한 문장으로 요약하자면, 시간을 어떻게 보내는지가 중요하는 거다. 그러니 이왕 흘러갈 시간이라면 조금이라도 즐겁게 보내야 한다. 유머와 재미가 중요한 이유는, 결국 시간이 소중하기 때문이니까. 모든 사람에게 시간은 동등하게 주어진다. 누군들 시간을 유쾌하게 보내고 싶지 않아할까. 오늘도 수많은 사람들은 자신에게 주어진 몇 시간 남짓한 자유시간을 최대한 재미있게 보내기 위해 유투브와 넷플릭스를 뒤적거린다. 물론 재미라는 게 생존을 위한 필수 요소는 아닐 수 있다. 밥만 잘 먹고도 죽지는 않으니까. 하지만 조금 더 인간다운 생활을 영위한다는 건, 동물적인 삶 그 이상의 무언가를 추구한다는 뜻이다. 원색적인 싸구려 농담에서 느..