IT공부 117

[C#] 추상 클래스와 인터페이스의 차이

* 추상 클래스(abstract class)   기본 구현과 상속을 통해 확장할 수 있는 기본 구현, 설계 뼈대를 제공   일반 메서드와 virtual 메서드가 있으며, virtual 메서드만 오버라이드(재정의) 가능   추상(abstract) 메서드는 반드시 재정의 필요   상태(필드)와 생성자 가능   단일 상속만 가능 * 인터페이스(interface)   기능의 명세(정의)만 제공, 구현은 없음(C# 8.0 전 기준)   C# 8.0 이후부터는 default 구현(바디 포함)도 가능   상태(필드)와 생성자 불가   다중 상속 가능 * 인터페이스는 "운전할 수 있는 자격증"과 같다   "이 객체는 운전할 수 있는 기능을 반드시 가지고 있어야 한다"는 의미를 가진 기능 명세using System;in..

IT공부 04:30:14

[C#] 오버라이딩 정리

* 오버로딩 (Overloading)   같은 이름, 다른 매개변수로 메서드를 여러 개 정의(컴파일 타임 다형성)* 오버라이딩 (Overriding)  부모로부터 상속받은 메서드를 자식 클래스에서 재정의(런타임 다형성)* sealed   더 이상 오버라이딩을 허용하지 않음(상속 제한) * 언어별 오버라이딩 비교 C++JavaC#기본 상속 구조다중 상속단일 상속 + 다중 인터페이스단일 상속+ 다중 인터페이스오버라이딩 키워드C++11 이후 override 키워드 지원@Overrideoverride강제성 선택 사항 선택 사항이지만IDE나 컴파일러가 경고 권장함 필수오버라이딩 목적- 기능 재정의- 다중 상속의 모호성 해결- 기능 재정의- 기능 재정의 * abstract와 virtual 비교(C# 기준)  abs..

IT공부 2025.04.11

[C#] 문자열 리터럴 vs 참조 타입 문자열

🔠 1. string은 어떤 타입인가?string은 참조 타입 (Reference Type)System.String 클래스의 aliasimmutable 불변  🧳 2. 문자열 리터럴 vs 힙에 생성된 string 참조 타입 객체   문자열 리터럴 "..."힙에 생성된 string 참조 타입 객체 new string("...") 생성 시점컴파일 타임에 intern pool 등록런타임에 힙에 새 객체 생성메모리 위치Intern Pool (공유)Heap (새로운 인스턴스)ReferenceEquals 비교 결과true (같은 리터럴이면)false (항상 다른 참조)  📂 3. Intern Pool이란?.NET 런타임(CLR)이 중복된 문자열을 하나만 저장해서 재사용하는 공용 문자열 저장소 [사용 이유](1..

IT공부 2025.04.10

[시작하세요! C#10 프로그래밍] 3장. C# 기초

* 해당 글은 시작하세요! C#10 프로그래밍 도서를 읽고 정리한 글입니다.   https://product.kyobobook.co.kr/detail/S000200047759 시작하세요! C# 10 프로그래밍 | 정성태 - 교보문고시작하세요! C# 10 프로그래밍 | 이 책의 목표는 여러분이 C#을 이용해 프로그래밍 기초를 탄탄하게 다질 수 있게 하는 것이다. 이를 위해 C# 언어의 최신 버전인 C# 10의 문법까지 구체적인 예제와product.kyobobook.co.kr    * 정수형 기본타입   sbyte - System.Sbyte   byte - System.Byte   short - System.Int16   ushort - System.UInt16   int - System.Int32   ui..

IT공부/IT서적 2025.04.10

[시작하세요! C#10 프로그래밍] 1장. 들어가면서, 2장. 개발 환경 준비

* 해당 글은 시작하세요! C#10 프로그래밍 도서를 읽고 정리한 글입니다.    https://product.kyobobook.co.kr/detail/S000200047759 시작하세요! C# 10 프로그래밍 | 정성태 - 교보문고시작하세요! C# 10 프로그래밍 | 이 책의 목표는 여러분이 C#을 이용해 프로그래밍 기초를 탄탄하게 다질 수 있게 하는 것이다. 이를 위해 C# 언어의 최신 버전인 C# 10의 문법까지 구체적인 예제와product.kyobobook.co.kr    * 닷넷 프레임워크(.NET Framework)   마이크로소프트에서 발표한 응용 프로그램 개발 환경으로 프로그램 가상 머신에 속한다 * CLR(Common Language Runtime)   가상머신 역할 * 공통 중간 언어(..

IT공부/IT서적 2025.04.10

[ETC] 자바는 JVM 생략 OK, C#은 왜 .NET까지 묶일까?

☕ 자바는 "JVM 포함"이 당연한 생태계   자바는 애초에 "Write Once, Run Anywhere"를 목표로 만들어진 언어다   즉, 어디서든 돌아가려면 당연히 JVM이라는 실행 환경이 전제가 되어야 했다    그래서 자바라는 의미에 사실상 자바 + JVM + 표준 라이브러리가 통째로 담겨있는 거고,   이게 너무 당연하게 묶여 있어서 굳이 "자바 + JVM"이라고 말하지 않는다   그냥 자바라고 한다 JUST 자바 😎😎😎  🧩 자바는 JVM 하나면 끝, C#은 선택부터 고민   C#을 사용한다고 하면, 자연스럽게 따라붙는 게 하나 있다   바로 실행환경이다!    자바는 JVM 하나면 끝인데,   C#은 .NET Framework, .NET Core, Mono, Unity 등 실행 환경..

IT공부 2025.04.10

[윤성우 열혈 C++프로그래밍] 어셈블리 코드 - Chapter5, Chapter6

* 복사 생성자를 정의하지 않으면,   멤버 대 멤버의 복사를 진행하는 디폴트 복사 생성자가 자동으로 삽입 * 복사 생성자가 호출되는 시점   (1) 기존에 생성된 객체를 이용해서 새로운 객체를 초기화하는 경우   (2) Call-by-value 방식의 함수호출 과정에서 객체를 인자로 전달하는 경우   (3) 객체를 반환하되, 참조형으로 반환하지 않는 경우(즉, 값으로 반환하는 경우) int main(void){008B10C0 push ebp 008B10C1 mov ebp,esp 008B10C3 sub esp,0Ch 008B10C6 mov eax,dword ptr [__security_cookie (08B5000h)] 008B10CB ..

IT공부/IT서적 2025.04.02

[윤성우 열혈 C++프로그래밍] 어셈블리 코드 - Chapter1, Chapter2

* C++에서는   프로그래머가 정의하는 헤더파일의 선언이 아닌, 표준 헤더파일의 선언에는 확장자를 생략하기로 약속되어 있다 int main(void){00007FF646331020 sub rsp,28h cout >::operator > (07FF6463310C0h)] 00007FF646331049 mov rcx,rax 00007FF64633104C call qword ptr [__imp_std::basic_ostream >::operator >::operator > (07FF6463310C0h)] 00007FF646331077 mov rcx,rax 00007FF64633107A call qword ptr [__im..

IT공부/IT서적 2025.03.22

[C++] const T&(읽기 전용 참조), T&&(우변 참조, 이동 가능)

* const T&(읽기 전용 참조)   - lvalue, rvalue 모두 받을 수 있음   - 복사 없이 임시값도 참조 가능   - 수정 불가   [사용 목적] 값을 읽기만 할 때, 복사 비용을 줄이면서 원본을 변경하지 않기 위해 * T&&(우변 참조, 이동 가능)   - rvalue만 받을 수 있음   - 복사 대신 이동(Move) 가능   - 수정 가능   - 임시값을 효율적으로 쓰고 싶을 때 사용   [사용 목적] 자원 소유권을 받아서 수정하거나 이동(move), 복사를 피하고 성능 최적 * string&, string&&, const string& 차이함수 선언받을 수 있는 값수정 시 원본 영향void f(string& s)lvalue (string a)바뀜void f(string&& s)rv..

IT공부 2025.03.22