본문 바로가기

분류 전체보기

(20)
생성자 사용 시 주의사항 in C++ C++에서 생성자를 사용할 때 주의해야 할 사항들은 다음과 같습니다.기본 생성자(Default Constructor) 제공 여부 확인클래스에 생성자를 정의하지 않으면 컴파일러가 자동으로 기본 생성자를 제공하지만, 다른 생성자가 정의되어 있으면 기본 생성자는 자동으로 생성되지 않습니다.기본 생성자가 필요한 경우 명시적으로 정의해야 합니다.class MyClass {public: MyClass(int value) { } // 기본 생성자가 없음};MyClass obj; // 오류 발생! 기본 생성자가 없음 해결 방법class MyClass {public: MyClass() {} // 기본 생성자 명시적 정의 MyClass(int value) {}};멤버 변수 초기화 순서 확인멤버 변수는 선..
l-value, r-value in C++ C++에서 l-value(left value)와 r-value(right value)는 변수나 표현식이 메모리에서 차지하는 위치 및 이동 가능성에 따라 구분됩니다.l-value (좌측 값)메모리에 저장된 값으로, 식의 왼쪽과 오른쪽에서 모두 사용 가능변경 가능하며, 주소를 참조할 수 있음 (& 연산자로 주소를 얻을 수 있음)변수, 참조 변수, 배열 요소, 객체 등이 해당 int x = 10; // 'x'는 l-value (메모리에 저장됨)x = 20; // 좌항(l-value)인 'x'에 20을 할당 (가능)int &ref = x; // 참조 가능 (l-value reference) l-value 특징식의 왼쪽(할당 대상)과 오른쪽(값 제공)에서 모두 사용 가능참조(&)를 통해 l-value ..
FSM, HFSM, B-TREE FSM, HFSM, B-TREE는 인공지능, 게임 개발, 로봇 제어 등에서 자주 사용되는 알고리즘 및 데이터 구조입니다. 각각의 개념을 간단히 정리하면 다음과 같습니다.FSM (Finite State Machine, 유한 상태 기계)상태(State)와 전이(Transition)로 구성된 단순한 상태 관리 기법.특정 입력이나 조건을 충족하면 하나의 상태에서 다른 상태로 전이.게임 AI, UI 흐름 제어, 네트워크 프로토콜 등에 자주 사용.장점: 구현이 간단하고 직관적.단점: 상태가 많아질 경우 복잡도가 증가하여 유지보수가 어려움.FSM C# 구현 예제public enum State { Idle, Walking, Running }public class StateMachine { private State..
A* 알고리즘 A* (A-star) 알고리즘은 그래프 탐색 및 최단 경로 문제를 해결하는 휴리스틱(heuristic) 기반의 알고리즘입니다. 다익스트라 알고리즘과 유사하지만, 특정 방향으로 더 빠르게 탐색할 수 있도록 휴리스틱 함수를 사용하여 성능을 향상시킵니다.개념A* 알고리즘은 **비용 함수 f(n)**을 사용하여 최적의 경로를 찾습니다.비용 함수는 다음과 같이 정의됩니다.f(n) = g(n) + h(n)g(n) : 시작 노드에서 현재 노드까지의 실제 비용h(n) : 현재 노드에서 목표 노드까지의 예상 비용(휴리스틱 함수)이러한 방식으로 탐색을 진행하면, 다익스트라 알고리즘보다 더 효율적으로 목표 지점까지의 최단 경로를 찾을 수 있습니다.휴리스틱(Heuristic) 함수란?휴리스틱 함수는 탐색 공간을 줄이고 최적 ..
디자인 패턴 - 행동 in C# C#에서 디자인 패턴은 코드의 유지보수성과 확장성을 높이는 데 중요한 역할을 합니다. 그중 **행동 패턴(Behavioral Patterns)**은 객체 간의 책임 분배와 상호작용을 효율적으로 설계하는 데 집중합니다.행동 패턴은 다음과 같은 상황에서 유용합니다:객체 간의 통신을 구조화하고 싶을 때특정 동작을 변경하거나 확장할 때객체의 결합도를 낮춰 유지보수성을 높이고 싶을 때전략 패턴 (Strategy Pattern) 전략 패턴은 런타임에 알고리즘을 변경할 수 있도록 하는 패턴입니다.사용 사례여러 개의 정렬 알고리즘을 유연하게 교체할 때결제 방식(카드, 계좌이체, 페이팔 등)을 런타임에 변경할 때// 전략 인터페이스 정의public interface IStrategy { void Execute();..
디자인 패턴 - 구조 in C# C#의 구조 패턴(Structural Patterns) 은 객체 간의 관계를 쉽게 구성하여 유연성과 효율성을 높이는 디자인 패턴입니다. 이는 클래스와 객체를 조합하여 더 큰 구조를 형성하는 데 초점을 맞추며, 유지보수성과 확장성을 개선하는 역할을 합니다.Adapter (어댑터) 패턴서로 다른 인터페이스를 가진 클래스를 호환 가능하게 만들어주는 패턴입니다.사용 사례기존 시스템과 새로운 시스템을 연결할 때인터페이스가 다른 두 클래스를 함께 사용할 때// 기존 인터페이스public interface ITarget{ void Request();}// 적응 대상 클래스 (호환되지 않는 인터페이스)public class Adaptee{ public void SpecificRequest() { ..
디자인 패턴 - 생성 in C# C#에서 **생성 패턴(Creational Patterns)**은 객체의 생성 방식을 정의하고 캡슐화하여 코드의 유연성과 유지보수성을 높이는 디자인 패턴입니다. 대표적인 생성 패턴으로는 다음과 같은 다섯 가지가 있습니다.Singleton (싱글톤 패턴)목적: 클래스의 인스턴스를 하나만 생성하고 전역적으로 접근할 수 있도록 보장활용 예시: 데이터베이스 연결, 설정 관리, 로깅 시스템public class Singleton{ private static Singleton? _instance; private static readonly object _lock = new object(); private Singleton() { } // 생성자 비공개 public static Singleton..
리플렉션(Reflection) in C# C#에서 리플렉션(Reflection) 은 런타임에 타입(metadata) 정보를 조사하고 객체를 동적으로 조작할 수 있는 기능을 의미합니다. 이를 활용하면 코드에서 특정 클래스, 메서드, 속성 등을 동적으로 분석하고 실행할 수 있습니다.리플렉션(Reflection) 개념C#의 리플렉션은 System.Reflection 네임스페이스에서 제공하며, 다음과 같은 작업을 수행할 수 있습니다.타입 정보 조회 (Type 객체 활용)어셈블리 정보 조회클래스의 필드, 속성, 메서드 접근 및 수정동적으로 메서드 실행객체 생성 및 조작리플렉션 기본 사용법리플렉션을 사용하려면 Type 클래스를 활용해야 합니다.1. 타입 정보 조회using System;class Program{ static void Main() ..