전체 글(131)
-
클래스 템플릿 기초
7.2 클래스 템플릿 기초7.2.1 클래스 템플릿의 개념클래스 템플릿은 다양한 데이터 타입에 대해 동일한 클래스 구조를 제공합니다:#include // 클래스 템플릿 정의template class Box {private: T content; public: // 생성자 Box(const T& item) : content(item) {} // 내용물 설정 void setContent(const T& item) { content = item; } // 내용물 반환 T getContent() const { return content; } // 내용물 출력 void printContent() const ..
2025.03.28 -
템플릿
템플릿템플릿은 C++의 가장 강력한 기능 중 하나로, 타입에 독립적인 코드를 작성할 수 있게 해줍니다. 템플릿을 사용하면 다양한 데이터 타입에 대해 동일한 알고리즘이나 클래스를 하나의 코드로 구현할 수 있어, 코드 재사용성과 유지보수성을 크게 향상시킬 수 있습니다.7.1 함수 템플릿 기초7.1.1 함수 템플릿의 개념함수 템플릿은 다양한 데이터 타입에 대해 동작하는 함수의 "청사진"을 정의합니다. 실제 함수는 컴파일러가 템플릿으로부터 필요한 타입에 맞게 생성합니다.#include // 두 값 중 최대값을 반환하는 함수 템플릿template T max(T a, T b) { return (a > b) ? a : b;}int main() { // 정수형에 대한 호출 int iResult = ma..
2025.03.28 -
챕터6. 실습 문제
6.6 실습 문제문제 1: 동적 메모리를 사용한 간단한 문자열 클래스#include #include class MyString {private: char* buffer; size_t length; public: // 기본 생성자 MyString() : buffer(nullptr), length(0) { buffer = new char[1]; buffer[0] = '\0'; } // 매개변수가 있는 생성자 MyString(const char* str) : buffer(nullptr), length(0) { if (str) { length = strlen(str); buffer = ..
2025.03.28 -
고급 포인터 주제
6.5 고급 포인터 주제6.5.1 포인터와 const포인터와 const 키워드의 조합으로 다양한 상황을 표현할 수 있습니다:#include int main() { int value = 42; int another = 100; // 1. 상수 포인터 (포인터 자체가 상수) int* const constPtr = &value; *constPtr = 50; // 값 변경 가능 // constPtr = &another; // 오류: 포인터를 다른 주소로 변경 불가 // 2. 상수에 대한 포인터 (가리키는 값이 상수) const int* ptrToConst = &value; // *ptrToConst = 60; // 오류: 가리키는 값 변경 불가..
2025.03.28 -
참조
6.4 참조6.4.1 참조의 기본 개념참조는 기존 변수의 별칭(alias)으로, 변수와 동일한 메모리 위치를 가리킵니다:#include int main() { int num = 42; int& ref = num; // num에 대한 참조 선언 std::cout 6.4.2 참조와 포인터의 차이점참조와 포인터는 모두 간접 참조 메커니즘을 제공하지만, 몇 가지 중요한 차이점이 있습니다:#include int main() { int num = 42; // 포인터 int* ptr = # // 참조 int& ref = num; std::cout 주요 차이점:참조는 반드시 초기화되어야 하며, null이 될 수 없습니다.참조는 한 번..
2025.03.28 -
동적 메모리 할당
6.3 동적 메모리 할당6.3.1 정적 vs 동적 메모리C++에서 메모리는 크게 두 가지 방식으로 할당됩니다:정적 메모리 할당:컴파일 시간에 크기가 결정됩니다.스택 메모리 또는 전역/정적 메모리에 저장됩니다.변수 수명이 정해져 있습니다(블록이 끝나거나 프로그램이 종료될 때).int num = 42; // 스택 메모리에 할당static int counter = 0; // 정적 메모리에 할당동적 메모리 할당:실행 시간에 크기가 결정됩니다.힙 메모리에 저장됩니다.명시적으로 해제할 때까지 메모리가 유지됩니다.int* dynamicNum = new int; // 힙 메모리에 할당*dynamicNum = 42;delete dynamicNum; // 할당된 메모리 해제6.3.2 n..
2025.03.28