전체 글(78)
-
재귀에 대한 생각.
재귀를 어떻게 사용하는가? 라는 질문은 다시 재귀를 왜 사용하는가? 라는 질문은 다시 전방재귀랑 후방재귀의 사용법으로 귀결된다. - 먼저 내가 전방재귀와 후방재귀를 expand해서 (#include 와 같이) 해석해봐야된다. 전방재귀는 어떤, stack의 역할을 수행한다. 그렇다면, 후방재귀는? 후방재귀야 말로, 개인적으로 생각하기엔, 재귀의 역할을 가장 잘 수행한다. 후방재귀는 buffer의 역할을 수행한다. 후방재귀는 "마치 미지의값을 아는 것 처럼 행동"한다. Fibonacci 재귀함수 구현을 기억하는가? return Fib(num -1)만 보고 생각해보자면, 나는 Fib(num-1)를 알지 못한다, 하지만 컴퓨터가 알거라는 "믿음"을 가지고, 해당 재귀를 사용하는것이다. 마치 while가 for문..
2020.11.04 -
Outer, Inner Class의 생성자와 소멸자 호출 타이밍
◆이는 컴파일러와 무관한 C++의 스타일인것을 확인했음. 생성자는 필드먼저, 소멸자는 this 먼저
2020.11.04 -
로켈 스택 포인터변수를 반환하면, 포인터변수는 해제되지만, 그 스택 메모리는 해제되지 않는다.
위의 코드는 문제없이 컴파일된다, 실행도 잘 된다. return temp; 후 temp라는 포인터변수 그 자체는 해제된다, => 해당 함수 실행 종료 후, temp라는 변수는 다시 재사용 할 수 없다. 하지만, temp가 가르키고 있던, 스택메모리가 해제되는것은 아니다. 하지만 quite nullsafe 해보이지는 않는다. 함수의 가장 중요한 점이, 재사용성과 독립성인데, 이전에 포스팅 한 것과 같이, 어떤 메모리 주소를 인수로 받아서, 이 주소의 역참조나 조작을 시행 한 뒤, 해당 메모리를 반환하는 형태가 더 함수의 건전성을 유지하는 것이라 생각된다. 예를들어 아래의 함수는 아주 잘 짜여진것이라 사료된다. ofstream& operator
2020.11.04 -
문자열 관리 {char*, char[] , string}
C++에서 문자열을 관리하는 방법 char* , char[], string 각 방법들이 문자열을 어떤 방식의 메모리 관리로 운용하는지 char[] str1 = "STR1"; char* str2 = "STR2"; // 실은 동작하지 않는다. string str3 = "STR3"; 1. char[] 2. char* 3. string은 잘 모른다... ㅠ 정리: 우선 Hello라는 상수 문자열 형태가 "실제론" 어떤 값을 갖고 있는지 고민 해 볼 필요가 있는데, 우리는 char라는 엔터티에 문자열을 저장할 수 없으므로, 문자열을 "주소"로 다룬다. 따라서 상수 문자열 형태도 "실제론" 메모리주소를 나타낸다. 따라서, char* str2 = "Hello"의 경우엔 str2에 상수문자열 형태의 Hello란 문자열..
2020.11.04 -
How will we deal with "Past-happened" problem
우선 답부터 말하자면, 어떤 수정을 행해야 하는지에 따라, 자료형을 정하고, 그 자료형을 생성하여, 주어진 데이터를 해당 자료형에 넣어서 해결한다. 우리가 다뤄야 할 문제는 이미 "과거에 일어난 일"을 수정 (By CRUD theorem, we could call this as "Update") 해야 하는가에 대한 문제이다. 예를들면 bracket problem, keylogger problem 등이 있다. 어떤 특정 String 이나 data를 받아서, 이를 "어떤식으로" 수정 해야하는 상황인데, 어떤 수정을 해야하는지에 따라, 주어 진 자료를 어떤 자료형에 넣어야하는지가 바뀐다, 예를들어, Keylogger problem의 경우, 주어진 자료형은 Doubly Linked List였다. 우선 해당 자료..
2020.11.04 -
기본생성자(void) 호출방법.
보다싶이 에러난다, parameter가 void인 constructor는 아예 인수없이 초기화해야한다.
2020.10.31