CS/C#_C++ 19

C# Abstract Class / Interface 비교

참고 영상C#의 추상 클래스 (Abstract Class)추상 클래스는 "Is-a" 관계(상속 관계)를 표현할 때 주로 사용됩니다. 부모 클래스가 자식 클래스에게 기본적인 기능(필드, 메서드)을 물려주면서, 특정 기능은 자식 클래스가 반드시 구현하도록 강제하고 싶을 때 사용합니다. ▶ 특징 및 구조Switchable(추상 클래스) : 위 이미지처럼 Switchable이라는 추상 클래스는 delay, activationTime 같은 필드(상태)와 Activate(), Deactivate() 같은 메서드를 가질 수 있습니다.Concrete Classes(구체 클래스) : Light, Door, NPC는 Switchable을 상속받습니다. 즉, "빛은 스위치 가능한 객체이다(Light is a Switchab..

CS/C#_C++ 2025.12.07

C# Property

Property(속성)란?프로퍼티는 객체 지향의 핵심인 은닉성(Encapsulation)을 지키면서, Getter/Setter 메서드를 더 편리하게 사용할 수 있도록 해주는 C#의 기능입니다. 보통 외부에서 멤버 변수에 직접 접근(write)하지 못하도록 변수는 protected나 private으로 감추고, public으로 된 접근 함수(Getter, Setter)를 만들어 우회해서 접근하게 합니다. 프로퍼티는 이 과정을 문법적으로 단순화시켜 줍니다. 겉보기에는 변수처럼 보이지만, 실제로는 특수 메서드(함수)처럼 동작합니다. 프로퍼티를 사용하는 이유단순히 변수를 public으로 여는 것보다 프로퍼티를 사용했을 때 얻을 수 있는 확실한 장점이 있습니다.은닉성 보장 : 외부에서 함부로 값을 바꾸는 것을 방지..

CS/C#_C++ 2025.12.06

(공통)C++과 C#

사전 지식메모리 주소 (Memory Address) : 데이터가 저장된 RAM 상의 위치입니다. 주소가 있다는 건 '식별 가능하고 찾아갈 수 있음'을 의미합니다.복사 비용 (Copy Cost):깊은 복사 (Deep Copy) : 데이터 전체를 새로 생성 (느림, C++의 기본).얕은 복사 (Shallow Copy) : 주소값만 복사 (빠름, C# 클래스의 기본). C++ : L-Value와 R-Value (= 성능 최적화의 핵심)C++11 이전에는 단순히 대입의 위치로 구분했으나, 모던 C++에서는 이동 시맨틱(Move Semantics)을 위해 개념이 명확히 정의되었습니다. 1) L-Value (Locator Value)정의: 이름(Identity)을 가지고 있으며, 메모리상의 특정 주소(Locatio..

CS/C#_C++ 2025.11.29

C# Lambda

사전 지식람다를 이해하기 위해서는 델리게이트(Delegate)의 작동 원리를 먼저 짚고 넘어가야 합니다. 델리게이트는 '대리자'입니다. 함수(메서드)를 대신해서 호출해주는 변수라고 생각하면 됩니다. FindItem 함수는 "구체적으로 어떻게 검사할지"는 모릅니다. 대신 "검사하는 기능을 가진 대리자(Delegate)"를 매개변수로 받아서, 그 대리자에게 실행(selector(item))을 맡깁니다. 람다식(Lambda Expression)이란?람다식은 익명 함수(Anonymous Function)를 단순한 문법으로 표현하여, 함수를 변수처럼 전달할 수 있게 해주는 기능입니다. 기존에는 특정 조건으로 데이터를 검색할 때마다 별도의 함수를 선언하거나 무명 메서드를 길게 작성해야 했지만, 람다식을 사용하면 ..

CS/C#_C++ 2025.11.25

C# Generic / Non-Generic

사전 지식컴파일 타임 vs 런타임 : 제너릭은 컴파일 타임에 오류를 잡아내고, 논제너릭(object 기반)은 런타임에 오류가 발생할 확률이 높다는 점을 인지해야 합니다. Non-GenericC# 1.0 시절, 모든 데이터 타입을 수용하기 위해 System.Object (모든 타입의 최상위 부모)를 기반으로 구현된 방식입니다.대표 클래스 : ArrayList, Hashtable, Queue, Stack (System.Collections 네임스페이스)작동 원리 : 모든 데이터를 object 타입으로 변환(업캐스팅)하여 저장합니다.문제점:타입 안정성 결여 : 꺼내 쓸 때 잘못된 타입으로 캐스팅하면 프로그램이 죽는 런타임 에러가 발생합니다.성능 저하 : 값 형식(Value Type)을 저장할 때 힙 할당(박싱..

CS/C#_C++ 2025.11.24

(공통)C++과 C# 파라미터 전달 방식 비교

권한 크기로 보는 4단계 계층 구조C++과 C#의 파라미터 전달 방식은 비슷해 보이지만, 근본적인 차이가 있습니다. 바로 "데이터를 어디까지 조작할 수 있는가?"(권한의 범위)가 다르다는 점입니다. 숫자가 커질수록 권한이 강력해지고, 그만큼 위험도(Side Effect)가 증가합니다.레벨권한 범위설명C++ 지원C# 지원Lv 1Value(값 복사)[읽기 전용]원본 절대 수정 불가.int xint xLv 2Sharing(참조값 복사)[내용 수정]객체 내부 값은 수정 가능.단, 객체 자체(주소) 교체 불가.❌ (없음)(Lv 4 포인터가 포괄)MyClass obj(Class 기본)Lv 3Reference(참조)[교체 가능]내용 수정 + 원본 객체 자체를 변경(Swap) 가능.MyClass*& ptr(포인터의 참..

CS/C#_C++ 2025.11.18

(공통)C++과 C# 언어 String 차이

구분C++ (std::string)C# (string / System.String)핵심 특징Mutable (변경 가능)Immutable (변경 불가능)타입 시스템값 타입(처럼 동작하는 클래스)참조 타입 (클래스)값 변경 시기존 객체의 메모리 버퍼를 직접 수정 (필요시 재할당)새로운 객체가 힙(Heap)에 생성됨메모리 관리RAII (스코프 기반 자동 해제)(= Resource acquisition is initialization = 자원 획득은 초기화 )GC (가비지 컬렉터)문자열 수정 권장 방식std::string을 그냥 사용StringBuilder 클래스 사용 (효율적) 필요 사전 지식C++과 C#의 string 차이를 명확히 이해하기 위해서는, 먼저 '변경 가능성(Mutability)'과 '값 타입(..

CS/C#_C++ 2025.11.14

C# Delegate / Event

C# 델리게이트(Delegate): '메서드를 담는 그릇'델리게이트는 메서드(함수)에 대한 참조(주소)를 저장할 수 있는 '타입(Type)입니다. C/C++의 함수 포인터와 근본적으로 하는 일은 비슷하지만, C#의 델리게이트는 비교할 수 없을 정도로 안전하고 강력한 추가 기능들을 제공합니다. 델리게이트의 3가지 핵심 특징델리게이트는 C/C++의 함수 포인터를 객체 지향적으로 발전시킨 형태로, 다음 세 가지 핵심 특징을 가집니다.타입 안전성 (Type Safety):델리게이트는 '시그니처(Signature)'(반환 타입, 매개변수 구성)가 미리 정의됩니다.정의된 시그니처와 정확히 일치하는 메서드만 참조할 수 있도록 컴파일러가 강제합니다.결과 : 타입 불일치로 인한 런타임 충돌(Crash)을 원천적으로 예..

CS/C#_C++ 2025.11.05

C# Reflection

사전 지식메타데이터(Metadata) : "데이터에 대한 데이터"입니다. C#에서는 어셈블리(DLL/EXE) 내에 저장된 타입(클래스, 구조체), 메서드, 필드, 속성 등에 대한 '설명 정보'를 의미합니다.컴파일 타임(Compile Time) vs 런타임(Runtime) : 컴파일 타임은 코드를 기계어로 번역하는 시점이며, 런타임은 프로그램이 실제로 실행되는 시점입니다. C# 리플렉션 (Reflection)리플렉션(Reflection = 반사, 성찰)이란 프로그램이 실행 중일 때(런타임) 자기 자신의 구조와 정보(메타데이터)를 검사하고, 이를 동적으로 활용하거나 수정할 수 있게 하는 .NET의 강력한 기능입니다.(※ '복제(Replication)'와는 다른 의미이며, 마치 거울에 비춰보듯 자기 자신을 ..

CS/C#_C++ 2025.10.31

C++ 클래스(Class)와 구조체(Struct)

C++ vs C# : 클래스(Class)와 구조체(Struct) 핵심 비교※ 이름은 같지만, 내용은 완전히 다르다.언어 비교 대상핵심 차이 (Key Difference)메모리 동작복사 방식C++class vs struct기본 접근 제어자 (private vs public)선언 방식에 따라 스택/힙 결정기본: 멤버별 복사 (얕은 복사)C#class vs struct타입 구분 (참조 타입 vs 값 타입)힙 (Heap) vs 스택 (Stack)주소(참조) 복사 vs 데이터(값) 복사 C++ 클래스(Class)와 구조체(Struct)클래스(Class)는 C++에서 객체 지향 프로그래밍을 지원하는 핵심 기능입니다.객체를 만들기 위한 '설계도' 또는 '틀'입니다.데이터(멤버 변수)와 해당 데이터를 처리하는 함수(멤..

CS/C#_C++ 2025.10.29