C++ 28

[C++/Console Engine] WinAPI로 커스텀 콘솔 엔진 구현하기(1) 엔진 속성 설정

수업시간에 강사님과 같이 진행했지만, 이해하고 구현했다기보다, 그냥 흘러가는 대로 코드를 쳤다...라는 것에 가까웠다. UnrealEngine 기능을 참고하여 기능을 구현하였기 때문에,일부분에 불과하지만 엔진은 이렇게 동작하는구나!를 조금은 알게 된 수업이었다.  이후 Console Game project를 진행하며, 사용하고 싶은 함수들을 파고 들어가고, 이해가 잘 안 가는 부분은 msdn에 검색하며 공부하니 재미있었다!이에 프로젝트에도 단순히 강사님 엔진을 그대로 사용하는 것이 아니라, 필요에 의해 이해하고 공부하며 구현하고싶어 진행하게 되었다. Linux API도 공부하여 사용하고 싶다. - 개인적인 공부 성향이 파고들고 분해하면서 직접 구현해야 한다.    0. 속성 설정하기   1) 구성 형식:..

C++/공부 2025.01.17

[ C++ 6, 7, 8, 9일차 ] 자료구조 시작, T 템플릿, 콘솔 엔진 제작 시작

자료구조선형/비선형 자료구조 : 연속적/비연속적 메모리 구조 선형 자료구조배열 : stack에 할당동적배열 : heap에 할당 - 배열- 동적 배열- 연결 리스트- 스택을 구현해 보는 작업을 했다.  구현 후에, template T로 범용성을 넓혀 구현하는 작업도 진행하며 템플릿의 특징을 정리해 보았다.  template T - .h 헤더파일에 모두 구현해야 함. (컴파일 타임에 다 해석되어야 하기 때문)     .cpp에 구현도 가능하지만, 구조가 이상해짐  - 템플릿이 복잡성을 증가할 수 있다.    예) const char*같은 경우, 따로 선언이 필요.     -> 템플릿을 만들기 전에, 사용 범위 다시 생각해 보고 구현하기  - 템플릿 생성자에서, 기본 생성자 초기값 설정을 다음과 같이 설정하면..

C++/수업 내용 2025.01.08

[ C++ 4일차 ] static, 형변환, RTTI, 파일입출력, 비트 배열

**개념의 자세한 내용이 아닌 기존 독학 내용을 제외한 강의에서 새롭게 알게 된 내용들을 정리하였다. 복습 내용~friend가 간편하지만 Getter/Setter로 하는 연습하기!~  staticcpp 밖으로 넘기지 않음. 변수는 최대한 범위를 제한하는 것이 좋다. static 변수는 코드 영역에서 메모리가 잡히기 때문에 (code/data/stack/heap 중)따로 초기화 필요. 선언하면 여러 인스턴스가 static 변수를 공유, 재활용한다.    형변환cpp는 4가지 형변환const_cast : const를 추가/제거static_cast : 주로 일반 형변환reinterpret_cast : C스타일 형변환과 동일한 성질, 강제 형변환. static_cast보다 강력하지만 안전하지 않음 dynamic..

C++/수업 내용 2024.12.30

[ C++ 3일차 ] 상속, 객체와 포인터의 관계, virtual 함수, 연산자 오버로딩

**개념의 자세한 내용이 아닌 기존 독학 내용을 제외한 강의에서 새롭게 알게 된 내용들을 정리하였다. 복습 내용 ~얕은 복사는 원본과 같은 주소 값을 가리킨다. 깊은 복사는 원본 값을 다른 주소에 복사하여 저장하는 것. 따라서 얕은 복사 시, 원본은 메모리 해제에 주의해야 함. ~ 접근 제한자 protected 확장가능성을 염두에 두고 사용하는 접근 제한자이다. 이 때문에, 많은 프로그램에서 protected를 많이 사용하였지만, 결과적으로 확장하지 않는 경우가 많았다고 한다. 따라서 요즘은 과도하게 확장을 고려하지 않고, 확장해야 할 때가 온다면 수정하는 추세라고 한다.  소스파일(.cpp)과 헤더파일(.h) 이동 단축키같은 이름의 소스파일과 헤더파일은 ctrl + k + o로 이동이 가능하다.  in..

C++/수업 내용 2024.12.27

[ C++ 2일차 ] class, 동적 메모리, C++의 고유 문법, 지평좌표계..

**개념의 자세한 내용이 아닌 기존 독학 내용을 제외한 강의에서 새롭게 알게 된 내용들을 정리하였다.  C++에 대한 정확한 자료들은 다음 두 페이지를 참고하자. https://learn.microsoft.com/ko-kr/cpp/cpp/?view=msvc-170 C++ 문서 - 시작, 자습서, 참조.Microsoft C++ 및 Visual Studio 사용자를 위한 C++ 프로그래밍 참조.learn.microsoft.comhttps://en.cppreference.com/w/ cppreference.comNull-terminated strings:    byte  −   multibyte  −   wideen.cppreference.com 특히 구글링 시, msdn (+검색 내용)을 하면 더 정확하다고..

C++/수업 내용 2024.12.26

[ C++/문제 해결 ] class의 깊은 복사와 임시 객체를 통한 생성 오류

수업 중 이슈 확인깊은 복사에서 다음 코드 내용과 같이 Player player2 = Player(player1);으로 임시 객체를 만들어 생성 시,  Player player1 = Player("Alien", 0, 0); Player player2 = Player(player1);다음과 같은 에러가 생긴다.  1) player2에 player1 임시 객체 할당 전2) 할당 후, player1.Print();3) player1.Print();가 끝난 후, 임시 객체를 최적화하여 name 증발 4) 최종 출력 화면   다음과 같이 임시 객체를 생성하지 않고 초기화하면 문제가 생기지 않는다! //Player player2 = Player(player1);로 임시 객체를 만들어 초기화하면 최적화당해 ..

C++/수업 내용 2024.12.26

[C++] '::' Scpe operator 스코프 범위 지정 연산자

C++을 공부하며 C#과는 다른 점들을 계속 비교하며 공부하게 된다. 이번에 집중하게 된 포인트는 Class의 함수를 외부에서 ::연산자를 통해 구현하고 있다는 점이었다.  처음에는 Class 참조를 .대신 ::로 하나? 생각했지만, 구현만 ::를 통해 하고 실행은 .혹은 동적할당을 통했다면 ->를 통하여 참조하고 있었다. 그래서 C++은 함수 구현을 모두 외부에서 하나?하고 구글링 해 보니,  클래스 내부에서도 함수 구현이 가능하지만, 클래스의 관리를 용이하게 하기 위해 외부에서 종속관계룰 표시하는 '::'인 범위 지정 연산자를 통하여 구현한다고 한다! https://learn.microsoft.com/en-us/cpp/cpp/scope-resolution-operator?view=msvc-170 Sc..

C++/공부 2024.09.03

[Unity] Unity의 custom 비교 연산자 ==

Memory Leak(메모리 누수) 관련 구글링 도중 재미있는 내용이 있어 공부해보았다.  https://note4iffydog.tistory.com/81 유니티 - Unity Memory Leak 이유와 관리 방법(Memory Profiler)memory leak은 성능 저하의 원인중 하나이고, 최적화를 위해 잡아야 하는 문제들중 하나이다. unity 내부에서 memoty leak을 유발 할 수 있는 이슈중 하나로, 잔류 unity instance가 있다. 이 경우 어디서 어note4iffydog.tistory.com위 블로그를 통하여 원문 공부 내용 Memory Leak의 원인 중 하나인 instance 잔류 문제에 관한 주제이다. Unity 스크립트는 C#으로 작성하지만, 엔진은 C++로 구성되어있..

Unity/공부 2024.08.21

[C++] Reference(참조자), 데이터 동적 할당 new 개념 공부

1. Reference(참조자) C와 C++의 차이를 공부하다가 레퍼런스에 대하여 공부하게 되었다.  레퍼런스는 C에는 없던 개념으로, 포인터와 유사한 개념이다. 하지만 포인터가 메모리 상에 존재하여 공간을 차지하는 반면 레퍼런스는 보통의 경우 공간을 차지하지 않는다.  레퍼런스를 사용하는 이유는, 참조하는 타입의 크기와 상관없이 주소값만 전달하면 되기 때문이다.  개념을 공부하며 다른 사람에게 설명하기 쉬운 비유가 생각났다. 예를 들어, ppt로 포트폴리오를 만들어 메일로 첨부하는 것 (직접 타입 전달)과드라이브에 포트폴리오를 올려 URL을 첨부하는 것 (주소값 전달)의 차이와 비슷하다고 느꼈다. 실제로 Gmail을 보내게 되면 일정 이상의 크기는 직접 첨부가 아니라 구글 드라이브 링크를 통하여 전달하..

C++/공부 2024.08.16

[C++] C에서 C++으로, 이것이 C++이다

취업 전까지 C++을 개념이라도 공부해 보자!라는 생각으로 일단 빠르게 서점을 가 입문서를 구매하였다. 여러 책을 둘러보다가 가 C를 배웠던 나에게 적합한 듯 보여 선택하게 되었다. 사실, C#을 배우면서 객체지향 언어라는 것을 강제로 주입한 느낌이 컸는데, 이 책의 1장에서 세탁소에 비유한 내용이 객체지향 언어를 확 와닿게 해 주었다. 점점 다양한 언어를 배워가며 느끼지만, 언어를 새롭게 배울 때 새롭게 배우는 언어를 기존의 언어의 개념을 가져와 정확하게 번역하려 하면 오히려 힘들다고 생각한다. 외국어를 배울 때도 각 언어만의 고유한 의미가 온전히 번역하기 어렵듯이, 컴퓨터 언어도 비슷하다고 느껴졌다. 1장 C와는 다른 C++ 1. 표준 헤더 파일들은 .h 확장명 생략 #include //C의 stdi..

C++/공부 2023.11.21