분류 전체보기49 C/C++ 참조자(reference) 내용 정리 참조자: 메모리 주소를 숨기고 안정성을 얻다C++의 참조자(reference)는 단순히 "포인터보다 쉬운 문법" 그 이상입니다. 실제로 참조자는 C++의 타입 시스템과 메모리 모델에 깊숙이 통합되어 있고, 복사 비용을 줄이고, 인터페이스의 안전성을 높이며, 원본 수정 제어까지 담당하는 중요한 개념입니다. 이번 글에서는 참조자의 기본 개념부터 심화 활용, 내부 작동 방식까지 심층적으로 다뤄봅니다.참조자의 정의: 또 하나의 이름참조자란 이미 존재하는 객체의 또 다른 이름(alias)입니다. 일단 어떤 변수와 결합되면, 그 변수의 메모리 공간을 함께 공유합니다.int x = 42;int& r = x; // r은 x의 또 다른 이름 이후 r을 통해 값을 읽거나 수정하면 실제로는 x의 메모리에 직접 접근하는 것.. 2025. 6. 19. [Effective C++ 정리 #9] 생성자에서 가상 함수 호출 문제 및 해결 방법 이 글은 『Effective C++』를 읽고 개인적으로 공부한 내용을 정리한 기록입니다.저는 컴퓨터공학을 전공하지 않았으며, 프로그래밍을 공부하는 과정에서의 이해와 생각을 정리하기 위해 글을 작성하고 있습니다.따라서 내용 중 일부에 오류나 부정확한 설명이 있을 수 있으며, 피드백은 언제든지 환영합니다. 확인 후 수정하도록 하겠습니다.전문적인 해설이 아닌 개인적 시선에서의 정리임을 참고하고 읽어주시면 감사하겠습니다.[Effective C++ 정리 #9] 생성자나 소멸자에서 가상 함수를 호출하지 마라Java나 C#처럼 가상 함수 기반 객체 지향 프로그래밍에 익숙한 사람이라면, C++에서 가상 함수를 사용할 때 뜻밖의 함정에 빠지기 쉽습니다. 바로 생성자와 소멸자에서는 가상 함수가 다형적으로 동작하지 않는다는.. 2025. 6. 19. C/C++ 포인터(pointer) 내용 정리 C++ 포인터: 단순한 주소가 아닌 메모리 제어의 핵심포인터는 단순히 "주소를 저장하는 변수"로 시작하지만, C++에서는 이보다 훨씬 깊은 의미를 가집니다. 이번 글에서는 포인터의 기본을 넘어, 메모리 모델, 포인터 산술, const 포인터, 함수 포인터, 동적 할당 관리까지 보다 심도 있게 다룹니다.포인터는 메모리 모델 그 자체C++은 하드웨어와 밀접하게 맞닿아 있는 언어입니다. 포인터를 이해한다는 것은 결국 메모리의 구조 자체를 이해한다는 것과 같습니다. 모든 변수는 물리적 메모리 어딘가에 주소를 가지고 있고, 포인터는 그 주소를 직접 다룰 수 있게 합니다.int x = 42;int* p = &x; 위에서 p는 스택 메모리 상의 변수 x의 주소를 저장합니다. 이 주소를 역참조(*p)하면 x의 값을 읽.. 2025. 6. 19. [Effective C++ 정리 #8] 소멸자에서 예외 처리 시 발생할 수 있는 문제 및 해결 방안 이 글은 『Effective C++』를 읽고 개인적으로 공부한 내용을 정리한 기록입니다.저는 컴퓨터공학을 전공하지 않았으며, 프로그래밍을 공부하는 과정에서의 이해와 생각을 정리하기 위해 글을 작성하고 있습니다.따라서 내용 중 일부에 오류나 부정확한 설명이 있을 수 있으며, 피드백은 언제든지 환영합니다. 확인 후 수정하도록 하겠습니다.전문적인 해설이 아닌 개인적 시선에서의 정리임을 참고하고 읽어주시면 감사하겠습니다.예외 처리(exception)이 소멸자가 끝나는 것을 막는다!C++에서는 소멸자에서 예외를 던지는 것이 허용되지만, 매우 위험한 행위로 간주됩니다. 이번 아이템에서는 소멸자에서 예외가 발생할 경우 무슨 일이 벌어지는지와 그에 따른 대처 방법에 대해 살펴봅니다.문제 상황: 소멸자에서 예외가 발생할.. 2025. 6. 18. [Effective C++ 정리 #7] 이걸 안 하면 메모리 누수! 소멸자는 왜 virtual이어야 할까? 이 글은 『Effective C++』를 읽고 개인적으로 공부한 내용을 정리한 기록입니다.저는 컴퓨터공학을 전공하지 않았으며, 프로그래밍을 공부하는 과정에서의 이해와 생각을 정리하기 위해 글을 작성하고 있습니다.따라서 내용 중 일부에 오류나 부정확한 설명이 있을 수 있으며, 피드백은 언제든지 환영합니다. 확인 후 수정하도록 하겠습니다.전문적인 해설이 아닌 개인적 시선에서의 정리임을 참고하고 읽어주시면 감사하겠습니다.[Effective C++ 정리 #7] 다형성(polymorphism)을 위한 기초, 소멸자는 반드시 virtual로 선언하라C++에서 상속을 활용해 다양한 객체를 다루는 경우, 의외로 간과하기 쉬운 치명적인 문제가 있습니다. 바로 기반 클래스의 소멸자를 virtual로 선언하지 않은 경우, 파.. 2025. 6. 17. 로컬에서 작업한 코드를 Github에 처음 올리는 방법! 개발할 때 Git을 이용해서 관리하거나 협업을 해야하는 상황이 많이 있습니다. 하지만 막상 로컬에서 개발한 프로젝트를 처음으로 Github에 업로드하려고 하면 그 과정을 매번 까먹어서 이렇게 기록합니다!!1. Git 저장소 초기화먼저 Git을 사용할 프로젝트 폴더로 이동한 후, 해당 폴더를 Git 저장소로 초기화합니다.cd /path/to/your/projectgit init 💡 참고: 아래와 같은 메시지가 나올 수 있습니다.힌트: Using 'master' as the name for the initial branch.This default branch name is subject to change. To configure the initial branch name to use in all of yo.. 2025. 6. 16. 이전 1 2 3 4 5 6 7 8 9 다음