6.5

2025. 6. 9. 20:53게임인재원/수업요약

반응형

그래픽스 연산에 행렬 사용하는이유는
행렬이 다항 연산의 속도가 빠른 도구이기 때문이다.
mutex, semaphore, critical section 등은 멀티스레딩 환경에서의 OS Kernel Objects이다.
단순 구현 방식이 아님.
----------------------------------------------------------------------------------------------
C++
동적할당 - 런타임시 사용자가 직접 메모리공간에 직접할당 (heap영역)
전역/정적 변수(data)와 지역변수(stack)로 해결되지 않는 경우.
(초기값 없는 전역,정적 변수는 BSS영역)
스택은 일단 영역을 많이 주지 않음.

void * void pointer 는 타입이 정해지지 않은 포인터 변수 - 추후 형변환을 통해 사용하기 위해 사용
malloc사용 시 free 잊지마삼 

malloc, free 에서 new. delete로 넘어옴.
이는 class 사용을 의미함. 
new int 도 클래스? -> 아님, 하지만 기본형에도 new 키워드 사용가능
new 자료형 -> class도 사용자정의 타.입(자료형)

derived type 은 type의 
포인터, 참조, 배열, 함수 포인터 등을 의미함. -> 당연히 사용자정의 타입에서도 가능하겠죠?
클래스 구조체도 결국 타입이라는 것을 잊지마.

char* 포인터의 경우
(void*) 으로 주소임을 명시해야함. -> 주소가 필요한 경우.

-중괄호 초기화- 괄호 초기화도 가능
double* p = new double; 에서 
double* p  {new double}; 로 초기화 가능 C++11 이후
배열을 할당과 동시에 중괄호 초기화 하면, 비어 있는 인덱스는 자동으로 기본값(int의 경우 0) 으로 초기화

new의 경우 할당과 동시에 초기화 가능
int* p = new int(10);

주의) 동적할당의 경우 pointer 변수이기에 sizeof 사용에 제약이 있음
방법은 size 자체를 처음에 선언해서 할당 받아 사용하는 수밖에

대입연산, int size =4; 같은 건 실행시간에 일어남 
따라서 동적 배열의 경우는 size 를 사용해서 크기결정은 문제가 없지만.
정적배열의 경우 arr[size] 시 컴파일 에러. 
컴파일 타임에는 size만 존재하지 실제론 아직 값이 없음.

포인터 변수들의 배열의 동적할당
포인터포인터 변수 = 포인터 변수들을 담겠다

참조는 쉽게 또 하나의 이름

참조와 포인터의 차이는? 실제 공간을 같은가의 차이?
참조는 공간이 아예 없나? 그렇다.
심지어 주소도 같음. 그냥 말 그대로 alias 임
 참조는 한번 정해지면 끝임. 대입연산은 값만 바꿀뿐.

Lvalue/Rvalue 참조연산  --
포인터도 변수임. 즉 똑같이 참조 가능
포인터의 ref는 가능, ref형의 포인터는 불가능, 그냥 참조했던 원본의 데이터형의 포인터 타입으로 받으삼 --
int a = 9;
int& ref = a;
int* p =&ref;는  int* p = &a; 와 같음 

그냥 완전히 같다로 보는게 맞다.
그래서 왜쓰냐 객체를 다룬때는 call by reference 사용

---구분---
void func(Object* object){ ... }
func(&object) 

void func(Object &object){...}   참조로 받는다? 값으로 받는 것과 pointer로 받는 것에 대한 차이를 알아야함.
func(object)

ref형 함수도 있음. 이때 받는 쪽도 ref로 선언되어야 ref로 받음. 아니면 value copy
여태껏 쓰던거 -> 값 return, 
ref return 도 있다~

const reference -> Rvalue 참조로 받으면 되는데 옛날엔 없었어서?
const ref로 인자를 받으면
void func(const int& a){ }
func(1)
func(a) 이렇게 가능

배열을 참조로 인자전달하기 --??

은닉은 멤버변수와 같은 객체데이터의 보호에 의의가 있음. ->함수를 거쳐서 수정하는 것.
const 함수는 해당 함수 내에서 멤버 값변경을 하지 않겠다는 선언. 또한 상수 객체와 비상수 객체 모두에게 사용가능하도록 하겠다. -> const ref와 같은 의미
객체 선언시 const 도 동일, const의 의미 그대로 따라감. 변경불가

생성자와 소멸자의 존재이유를 이해해야함
초기화와 정리의 의미
특히 소멸자의 경우 객체 내에서 동적할당시 소멸자에서 메모리 해제할 수 있음 

'게임인재원 > 수업요약' 카테고리의 다른 글

6.9  (0) 2025.06.09
6.2  (0) 2025.06.09
4.10 ~ 4.11  (0) 2025.04.11
4.5 ~ 4.9  (0) 2025.04.11
4.3, 4.4 Class 상속, 다형성  (0) 2025.04.03