728x90

전체 글 62

[C++] init-statement(opt) condition/init-statement condition

[C++] for문 init-statement와 condition 완벽 정리C++에서 반복문은 프로그램 흐름을 제어하는 핵심 요소이며, 그중에서도 for 문은 가장 널리 사용되는 반복 구조입니다.특히 init-statement와 condition은 반복문의 시작과 종료를 결정하는 중요한 역할을 합니다.이번 글에서는 for 문의 구조를 자세히 살펴보고, 각 요소가 어떤 의미를 가지는지,그리고 실무에서 어떻게 활용되는지까지 단계적으로 설명합니다.📌 for문 기본 구조for (init-statementopt; condition; expression){ // 반복 실행 코드} 구성 요소 설명 - init-statement: 초기화 구문 (선택) - condition: 반복 조건 - ..

C++ 2026.03.26

[C++] dynamic_cast

[C++] dynamic_castdynamic_cast는 C++에서 상속 관계의 클래스 간 안전한 형 변환을 위해 사용되는 연산자입니다. 주로 런타임 다형성(Run-Time Polymorphism)을 지원할 때 사용됩니다.✅ 특징 런타임 타입 확인 (RTTI) 기반 dynamic_cast는 런타임에 실제 객체의 타입을 확인합니다. 반드시 가상 함수(virtual) 가 포함된 클래스에서만 사용할 수 있습니다. 주 용도는 다운캐스팅 업캐스팅은 암시적으로 가능하지만, 다운캐스팅(기본 클래스 → 파생 클래스)은 dynamic_cast를 통해 안전하게 수행할 수 있습니다. 변환 실패 시 동작 포인터 변환 실패 시: nullptr 반환 참조 변환 실패 시: std::bad_c..

C++ 2025.05.11

[C++] 가상 함수 (virtual function)

[C++] 가상 함수 (virtual function)가상 함수는 C++에서 다형성(polymorphism)을 구현하기 위한 핵심 개념입니다. 주로 상속 구조에서 기본 클래스 포인터(또는 참조)를 통해 파생 클래스의 함수를 호출할 수 있도록 도와줍니다.1. 가상 함수란? virtual 키워드를 사용하여 기본 클래스에 선언된 멤버 함수입니다. 파생 클래스에서 재정의(overriding)할 수 있으며, 이를 통해 런타임 다형성(runtime polymorphism)이 가능합니다.class Base {public: virtual void show(); // 가상 함수};2. 런타임 다형성의 동작 원리가상 함수는 동적 바인딩(dynamic binding)을 지원합니다. 즉, 컴파일 시점이 아닌 실행 시..

C++ 2025.04.23

[C++] static_cast 란?

[C++] static_cast 사용법 정리static_cast는 C++에서 제공하는 형 변환 연산자 중 하나로, 타입의 안전성을 일정 수준 보장하면서도 명시적인 형 변환을 가능하게 해줍니다. 주로 다음과 같은 상황에서 사용됩니다.1. 기본 타입 간의 변환int, float, double 같은 기본형 간의 변환에 사용됩니다.int a = 5;float b = static_cast<float>(a); static_cast는 명시적인 변환을 통해 컴파일러와 읽는 사람 모두에게 의도를 분명히 전달할 수 있습니다. 예를 들어 float → int 변환처럼 데이터 손실이 발생할 수 있는 경우에도 사용됩니다.2. 상속 관계에서의 포인터/참조 변환기본 클래스 포인터를 파생 클래스 포인터로 변환할 때 사..

C++ 2025.04.22

[C++] string_view와 C 스타일 문자열 비교

[C++] string_view와 C 스타일 문자열 비교C++에서는 문자열을 다루는 방식이 다양합니다. 그중에서 아래 두 코드처럼 "Hello"라는 문자열을 다르게 표현할 수 있습니다.char const msg[] = "Hello";std::string_view msg2 = "Hello"sv;두 표현 모두 "Hello"라는 같은 문자열 데이터를 가지고 있지만, 데이터 타입과 메모리 관리 방식에서 중요한 차이가 있습니다.1. msg — C 스타일 문자열char const msg[] = "Hello"; 타입: const char[6] (문자 배열) 내용: "Hello"는 5글자지만, 문자열 끝을 알리기 위해 \0(널 문자)이 포함되어 총 6바이트입니다. 메모리: 문자열 리터럴은 정적 메모리에 저장되고,..

C++ 2025.04.20

[C++] type-specifier-seq / 타입 지정자 시퀀스란?

[C++] type-specifier-seq란?type-specifier-seq는 C++와 같은 언어에서 변수나 함수의 타입을 정의하는 데 사용되는 일련의 타입 지정자(type specifiers)를 의미합니다. 이 구문은 변수나 함수의 자료형을 명시하고, 컴파일러에게 데이터의 종류와 동작을 설명해 주는 역할을 합니다.✅ 예시: int a = 10;에서의 type-specifier-seqint a = 10;위 코드에서 int는 type-specifier-seq의 일부입니다. 즉, 변수 a는 int 타입의 변수라는 의미입니다.🔍 type-specifier-seq란?type-specifier-seq는 하나 이상의 타입 지정자로 구성되며, 이 조합을 통해 변수 또는 함수의 타입을 정의할 수 있습니다.🧩 사..

C++ 2025.04.19

[C++]init-statementopt condition의 개념과 활용

init-statementopt condition는 프로그래밍 언어에서 반복문이나 제어 구조를 정의할 때 사용되는 구문 패턴을 말하며, 주로 C, C++, Java 같은 언어에서 for 반복문을 구성할 때 이 개념이 적용됩니다. for 반복문의 구문 구조for (init-statementopt; condition; expression) { // 반복할 코드}여기서 init-statementopt와 condition은 각각 다음을 의미합니다.1. init-statementopt (초기화 문)반복문이 시작될 때 한 번 실행되는 초기화 문입니다. opt(optional)라는 표기가 있듯이 선택적으로 생략할 수 있습니다.일반적으로 반복 카운터 변수를 선언하거나 초기화하는 데 사용됩니다.for (int i ..

C++ 2025.02.03

[C++] const static data member

constexpr는 C++11에서 도입된 키워드로, 컴파일 타임에 상수를 계산할 수 있도록 합니다. 이를 통해 런타임 비용을 줄이고, 코드의 안정성과 최적화를 향상시킬 수 있습니다. 주요 특징컴파일 타임 계산constexpr 함수와 변수는 가능한 경우 컴파일 타임에 계산됩니다.런타임에서 호출될 수도 있지만, 계산 가능 여부는 입력 값에 따라 결정됩니다.상수 표현식constexpr 변수는 반드시 상수 표현식으로 초기화되어야 합니다.컴파일 타임에 상수로 사용될 수 있습니다.constexpr int a = 10; // 컴파일 타임 상수constexpr int b = a + 5; // 컴파일 타임에 15로 계산 함수의 제한 사항C++11: 함수 본문은 단일 return 문으로만 작성 가능.C++14: 조건문(i..

C++ 2024.11.27

[C++] front 함수

front 함수는 C++ STL(Standard Template Library)의 여러 컨테이너에서 제공하는 멤버 함수로, 컨테이너의 첫 번째 요소에 대한 참조를 반환합니다. 이를 사용하여 첫 번째 요소를 읽거나 수정할 수 있습니다. 사용 가능 컨테이너front 함수는 다음과 같은 STL 컨테이너에서 사용할 수 있습니다:시퀀스 컨테이너: std::vector, std::deque, std::list컨테이너 어댑터: std::queue (첫 번째 요소를 반환)사용 예시#include #include int main() { std::vector vec = {10, 20, 30}; // 첫 번째 요소 출력 std::cout 출력 결과첫 번째 요소: 10 수정된 첫 번째 요소: 100특징반환 ..

C++ 2024.11.26

[C++] 클래스 템플릿의 부분 특수화(partial specialization)와 명시적 특수화(explict specialization)

C++ 템플릿의 부분 특수화와 명시적 특수화는 템플릿을 특정 타입이나 조건에 맞게 커스터마이징하는 강력한 기능입니다. 이를 통해 일반적인 템플릿을 특정 조건에 따라 다르게 동작하도록 설계할 수 있습니다. 1. 명시적 특수화 (Explicit Specialization)명시적 특수화는 템플릿을 특정 타입에 대해 완전히 재정의하는 것입니다. 이는 특정 타입에 대해 일반 템플릿이 아닌 별도의 동작을 수행하도록 만듭니다.기본 구조template class MyClass { // 일반 템플릿 정의};// 특정 타입에 대한 명시적 특수화template class MyClass { // 특정 타입에 대한 특수화된 정의};예제: 명시적 특수화#include // 일반 템플릿template struct MyS..

C++ 2024.11.25
728x90