프로그래밍 언어

    C++ 가상함수 테이블 (Virtual Table)

    #include using namespace std; class A { public: virtual void Func1() { cout

    C# 제네릭 (C++ > 템플릿)

    using System; public class Test where T : class { public T Get_val(T _val) { return _val; } } public class Another { public static void Main() { Test int_test = new Test(); Console.WriteLine(int_test.Get_val(10)); } } 첫째 클래스 선언 라인에 보면 where T : class라고 명시 되어있다, Main 함수 내에 선언하고 있는건 int형이다, 따라서 아래와 같이 에러가 뜬다. C++와 가장 큰 차이점은 C#의 템플릿은 제약 사항이 많다는 것이다, SFINAE도 있겠지만 가장 큰 특징은 추상화를 할 수 없다는 점이다 따라서 아래는 에러..

    [SQL] 중첩 트리거 (Nested Trigger)

    USE triggerDB;CREATE TABLE orderTBL -- 구매 테이블 ( orderNo INT AUTO_INCREMENT PRIMARY KEY, -- 구매 일련번호 userID VARCHAR(5), -- 구매한 회원 아이디 prodName VARCHAR(5), -- 구매한 물건 orderamount INT -- 구매한 개수 );CREATE TABLE prodTBL -- 물품 테이블 ( prodName VARCHAR(5), -- 물건 이름 account INT -- 남은 물건 수량 );CREA..

    [SQL] 트리거

    drop trigger if exists back_usertbl_update_trg; delimiter //create trigger back_usertbl_update_trgafter update on usertbl for each rowbegin insert into backup_userTBL values(old.userid,old.username, old.birthyear,old.addr,old.mobile,old.height,old.joindate, '수정',curdate(),current_use..

    C++ 캐스팅 static_cast / reinterpret_cast 예제

    #include #include #include #include #include #include using namespace std; template T* Cast(F* _ptr) { static_assert(std::is_pointer::value, "포인터가 아님"); void* p_void = _ptr; T* p_casted = static_cast(p_void); if (!p_casted) p_casted = reinterpret_cast(p_void); return p_casted; } class A { protected: int val = 10; public: A() { cout

    C++ SFINAE 여러 타입에 대응하는 템플릿 오버로딩

    #include #include #include #include #include #include using namespace std; template using enable_if_t = typename enable_if::type; template void Run(T& t) { // 정수 타입들을 받는 함수 (int, char, unsigned, etc.) cout

    C++ 콜백 CallBack 함수

    #include #include #include #include #include #include using namespace std; using void_two_params_pointer = std::function; void Function(bool _is_value, int _value) { cout

    C# Delegate Event 사용법

    delegate 는 메서드를 가리킬 수 있는 타입의 간편 표기법. event도 간편표기법. event를 사용하면 정형화된 콜백 패턴을 구현하려할때 코드를 줄일 수 있음. - 조건 1. 클래스에서 이벤트(콜백)를 제공한다. 2. 외부에서 자유롭게 해당 이벤트(콜백)을 구독하거나 해지하는 것이 가능하다. 3. 외부에서 구독/해지는 가능하지만 이벤트 발생은 오직 내부에서만 가능하다. 4. 이벤트의 첫번째 인자는 이벤트를 발생시킨 타입의 인스턴스다. 5. 이벤트의 두번째 인자는 해당 이벤트에 속한 의미 있는 값이 제공된다. using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threadi..

    C# 사용자 정의 전환 연산자(암시적/명시적)

    using System; using System.Collections.Generic; using System.Linq; using System.Runtime.InteropServices.ComTypes; namespace ConsoleApp8 { public struct s_data { public string name = ""; public int hp = 0, mp = 0; public s_data() { } // 데이터 대입 public s_data(string _name, int _hp, int _mp) { name = _name; hp = _hp; mp = _mp; } } // 기본 캐릭터 클래스 public class Character { public s_data data = new s_dat..

    [SQL] 비번 재설정 하는 방법

    서비스에서 mysql 서비스 중지 mysqld --datadir="C:\ProgramData\MySQL\MySQL Server 8.0\Data" --console --skip-grant-tables --shared-memory 창 그대로 유지 후 cmd 하나 더 띄워서 총 cmd 창 2개 mysql -u root use mysql update user set authentication_string=null where user='root'; flush privileges; alter user ..