전체 글 282

L-Value R-Value

L-Value는 간단히 말하자면 식별 가능한(즉, 주소가 있는) 메모리에 위치한 객체이다. 1. 모든 구문에서 할당되었을 때, "L-Value"는 반드시 데이터를 저장할 수 있는 기능을 가져야 한다. 2. L-Value는 반드시 함수나, 식 ( a+b와 같은), 상수 ( 3, 4, 등등)가 될 수 없다. L - Value : L - Value는 객체를 식별하는 메모리 위치를 말한다. L - Value는 대입 연산자 (=) 의 오른쪽 또는 왼쪽에 나타낼 수 있다. +임시 변수 = R-Value C++는 실제 매개변수와 참조 매개변수가 일치하지 않을 때 임시 변수를 생성할 수 있다. 죄근의 C++는 매개변수가 const 참조일 경우에만 이것을 허용한다. 이것은 새로운 제약이다. C++가 어떤 경우에 임시 변..

행렬과 삼각함수

삼각함수 삼각함수란? + 행렬을 들어가기 전에 게임 수학에서 행렬을 쓰는 이유. 선형 변환의 원리는 게임의 가상 세계를 구축하는 데 필요한 모든 변환의 기본 바탕이 된다. 따라서 선형 변환을 안정적이고 빠르게 계산할 수 있는 체계가 구축된다면, 컴퓨터를 사용해 게임이 요구하는 가상 세계의 기반을 손쉽게 구축할 수 있을 것이다. 수학자들은 선형 변환의 계산 과정을 체계화하여 손쉽게 계산할 수 있는 편리한 도구를 발명했는데 그것이 바로 행렬이다. 행렬 행렬은 수를 사격형의 형태로 행과 열을 맞춰 배열한 테이블이다. 따라서 n개의 행과 m개의 열로 구성된 반듯한 사각형의 형태를 띤다. 예를 들어 위 행렬은 2 x 3 행렬은 다음과 같이 2행 3열의 형태를 띤다. A는 열 백터, B는 행 백터라 부른다. 선형 ..

#include <sstream>

1. istringstream과 ostringstream과 stringstream 은 무엇인가? 문자열을 다룰 때 유용하게 사용 가능한 Class이다. 1) istringstream - 문자열 포맷을 parsing 할 때 사용한다. 2) ostringstream - 문자열 format을 조합하여 저장할 때 사용합니다. 3) sstringstream - 문자열에서 내가 원하는 자료형의 데이터를 추출할 때 사용한다. 2. 헤더 정보 #include 를 include 하면 사용 가능하다. 3. 기본 사용법 1) istringstream로 문자열 format을 분해하기 - 다음 예제에서 space 또는 tap으로 구분된 "test 123 123 hah ahha" 를 각 변수에 알맞게 넣은 예제이다. #inclu..

WIN API (1)

WIN API int APIENTRY wWinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPWSTR lpCmdLine, _In_ int nCmdShow) { MyRegisterClass(hInstance); WIN API에서 _IN_ 은 필수적으로 필요로 하는 매개변수로, _IN_은 우리가 수정할 수 없는 매개변수로 0값을 절대적으로 들어오지 못하게 만든다. 만약 0값이 들어오게 되면 프로그램은 폭파된다. hlnstance = 게임의 주소값이 들어가는 자리이다. nCmdShow = 작업 관리자나 아래에는 창이 들어와있지만 보여주지 않을 것이냐 보여줄 것이냐 하는 역할을 담당한다. MyRegisterClass(hlnstanc..

WINDOWS 2023.02.13

vector 와 array

vector 는 동적 배열 구조로 구성 요소가 생성되고 삭제되면서, 스스로 크기를 자동적으로 조절한다. 이는 우리가 동적 배열을 하게되면 new와 delete를 사용하지만, 실제로 vector 클래스는 메모리를 관리하기 위해서 그 과정을 자동적으로 진행한다. 백터의 인덱스는 연속된 스토리지 배치되어 백터 데이터는 끝에 삽입된다. 배열을 확장해야 하는 경우는 위치에 따라 시간이 달리 걸린다. 마지막 인덱스를 제거하는 것은 크기 조정이 수행되지 않으므로 바로 제거가 가능하여, 일정 시간만 소요된다. 인덱스를 시작 부분이나 중간 부분에 끼워 넣거나 제거할 때는 시간이 더욱 걸린다. 1) vector container 란? vector 컨테이너는 자동으로 메모리가 할당되는 배열. 이라고 생각하면 될거같습니다. ..

Generic & Function Overload

제네릭 프로그래밍 제네릭 프로그래밍의 사전적 정의 제네릭 프로그래밍은 데이터 타입에 의존하지 않고, (다양한 데이터형을 받을 수 있다는 말은 즉, = 다향성(polymorphism)을 뜻한다. 그 프로그래밍 언어의 자료형 체계의 성질을 나타내는 것으로, 프로그램 언어의 각 요소 (상수, 변수, 식, 오브젝트, 함수, 메소드 등) 들이 다양한 자료형(type)에 속하는 것이 허가되는 성질을 가리킨다. 반댓말은 단항성(monomorphism)으로, 프로그램 언어의 각 요소가 한가지 형태만 가지는 성질을 가리킨다.) 하나의 값이 여러 다른 데이터 타입들을 가질 수 있는 기술에 중점을 두어 재사용성을 높일 수 있는 프로그래밍 방식이다. 제네릭 프로그래밍은 여러 가지 유용한 소프트웨어 컴포넌트들을 체계적으로 융합..

클래스

추상화( = Abstraction ) 데이터 추상화란 가장 본질적이고 중요한 OOP(= 객체지향프로그램) C++ 언어의 특색 중 하나이다. 추상화란 의미는 나타낸다 오롯이 중요한 정보는 표시하고, 세부 사항은 숨기는 것을 의미한다. 데이터 추상화를 예를 들면 사람이 차를 운전하는 실제 사례를 예시로 들어보겠다. 사람이 엑셀레이터를 밟으면 차의 속도가 빨라지거나 브레이크를 밟으면 차가 멈춘다는 것만 알고 있을 뿐, 실제로 액셀러레이터를 밟으면 어떻게 속도가 빨라지는지, 차의 내부 메커니즘이나 차의 엑설레이터, 브레이크 등의 구현에 대해서는 알지 못한다. 이것이 바로 추상화이다. 1. Data Abstraction 데이터 추상화 이 타입은, 오직 필수적인 정보에 대해서만 보여주고 불필요한 정보는 숨긴다. 2..

20230130 그간 배운 변수와 함수 상수 등 정리

1-1) 지역 변수(=Local Variable) 란? 지역 변수의 정의는, 초기값이 변수에 설정되고 함수나 메서드 또는 블록에서 사용되는 것이다. 이 변수는 오직 함수나 메서드 혹은 다른 블록으로 넘어 갈때, 즉, 지역 변수가 살아있던 블록이나 메서드 혹은 함수가 아닌 다음 블록이나 메서드 함수에서는 자연적으로 파괴되어야만 유의미한 변수이다. 지역 변수가 해당된 함수, 메서드, 블록말고 다른 외부에서 참조되는 경우 프로그램은 오류를 반환한다. 전역 변수와 지역 변수는 같은 이름을 사용할 수 있으나, 혹은 같은 지역변수라 하더라도 더 영역이 넓은 블록에 있는 같은 이름의 지역 변수와 그 영역 내에 더 좁은 영역의 블록의 지역 변수가 같을 수 있다. 하지만 이들을 구별하는 것은 변수가 작동하는 경계 범위에..