본문 바로가기

C++17

[ C++ 6, 7, 8, 9일차 ] 자료구조 시작, T 템플릿, 콘솔 엔진 제작 시작 자료구조선형/비선형 자료구조 : 연속적/비연속적 메모리 구조 선형 자료구조배열 : stack에 할당동적배열 : heap에 할당 - 배열- 동적 배열- 연결 리스트- 스택을 구현해 보는 작업을 했다.  구현 후에, template T로 범용성을 넓혀 구현하는 작업도 진행하며 템플릿의 특징을 정리해 보았다.  template T - .h 헤더파일에 모두 구현해야 함. (컴파일 타임에 다 해석되어야 하기 때문)     .cpp에 구현도 가능하지만, 구조가 이상해짐  - 템플릿이 복잡성을 증가할 수 있다.    예) const char*같은 경우, 따로 선언이 필요.     -> 템플릿을 만들기 전에, 사용 범위 다시 생각해 보고 구현하기  - 템플릿 생성자에서, 기본 생성자 초기값 설정을 다음과 같이 설정하면.. 2025. 1. 8.
[ 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.. 2024. 12. 30.
[ C++ 3일차 ] 상속, 객체와 포인터의 관계, virtual 함수, 연산자 오버로딩 **개념의 자세한 내용이 아닌 기존 독학 내용을 제외한 강의에서 새롭게 알게 된 내용들을 정리하였다. 복습 내용 ~얕은 복사는 원본과 같은 주소 값을 가리킨다. 깊은 복사는 원본 값을 다른 주소에 복사하여 저장하는 것. 따라서 얕은 복사 시, 원본은 메모리 해제에 주의해야 함. ~ 접근 제한자 protected 확장가능성을 염두에 두고 사용하는 접근 제한자이다. 이 때문에, 많은 프로그램에서 protected를 많이 사용하였지만, 결과적으로 확장하지 않는 경우가 많았다고 한다. 따라서 요즘은 과도하게 확장을 고려하지 않고, 확장해야 할 때가 온다면 수정하는 추세라고 한다.  소스파일(.cpp)과 헤더파일(.h) 이동 단축키같은 이름의 소스파일과 헤더파일은 ctrl + k + o로 이동이 가능하다.  in.. 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 (+검색 내용)을 하면 더 정확하다고.. 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);로 임시 객체를 만들어 초기화하면 최적화당해 .. 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.. 2024. 9. 3.