728x90

언어 104

클래스(Class)

클래스(Class)키워드 struct를 대신해서 class를 사용하면, 구조체가 아닌 클래스가 된다.클래스는 기본적으로(별도의 선언을 하지 않으면) 클래스 내에 선언된 변수는 클래스 내에 선언된 함수에서만 접근이 가능하다.클래스는 정의를 하는 과정에서 각각의 변수 및 함수의 접근 허용범위를 별도로 선언해야 한다. 이것이 struct를 이용해서 정의하는 구조체와 class를 이용해서 정의하는 클래스의 차이점이다.접근제어 지시자(접근제어 레이블)C++의 접근제어 지시자는 다음과 같이 총 세가지가 존재한다.public : 어디서든 접근허용protected : 상속관계에 놓여있을 때, 유도 클래스에서의 접근 허용private : 클래스 내(클래스 내에 정의된 함수)에서만 접근허용접근제어 지시자가 선언되면, 그 ..

언어/C++ 2024.11.26

구조체(Struct)

구조체(Struct)구조체는 연관 있는 데이터를 묶을 수 있는 문법적 장치로 데이터의 표현에 매우 큰 도움을 준다.키워드 struct는 이어서 선언되는 자료형이 구조체를 기반으로 정의된 자료형임을 나타낸다. 그리고 키워드 struct를 생략하려면 별도의 typedef 선언을 추가해야 한다. 하지만 C++에서는 기본 자료형 변수의 선언방식이나 구조체를 기반으로 정의된 자료형의 변수 선언방식에 차이가 없다. 즉 C++에서는 별도의 typedef 선언 없이도 다음과 같이 변수를 선언할 수 있다.C++에서 구조체는 클래스의 일종으로 간주된다.구조체 함수구조체 안에 함수가 정의되어 있으면 함수를 인라인으로 처리하라는 의미가 더불어 내포된다.반면 함수를 구조체 밖으로 빼내면(함수 자체는 내부, 구현을 외부), 이러..

언어/C++ 2024.11.24

참조자(Reference)

참조자(Reference)이미 선언된 변수의 앞에 & 연산자가 오면 주소 값의 반환을 명령하는 뜻이 되지만, 새로 선언되는 변수의 이름 앞에 등장하면, 이는 참조자의 선언을 뜻하는 게 된다.참조자는 자신이 참조하는 변수를 대신할 수 있는 또 하나의 이름이다.함수 내에서 선언된 지역적(local) 참조자는 지역변수와 마찬가지로 함수를 빠져나가면 소멸이 된다.참조자 수에는 제한이 없다. 한 개의 변수에 여러 개의 참조자를 선언하는 것도 가능하다.참조자의 선언 가능 범위참조는 변수에 대해서만 선언이 가능하고, 선언됨과 동시에 누군가를 참조해야 한다.상수를 대상으로 참조자를 선언할 수는 없고, 미리 참조자를 선언했다가, 후에 누군가를 참조하는 것은 불가능하며, 참조의 대상을 바꾸는 것도 불가능하다.참조자가 상수..

언어/C++ 2024.11.24

인라인(inline) 함수

인라인(inline) 함수함수 호출의 오버헤드를 줄이기 위해, 컴파일러가 함수 호출을 실제 함수 코드로 대체하도록 제안하는 함수이다.C++에서 inline 키워드를 사용하여 선언한다.인라인 함수는 컴파일 시점에 처리되며, 함수 호출 대신 함수의 본문을 호출 지점에 복사하여 성능을 최적화하려는 목적으로 사용된다. 따라서 컴파일러는 함수의 인라인화가 오히려 성능에 해가 된다고 판단할 경우, 이 키워드를 무시해버리기도 한다. 또한 컴파일러는 필요한 경우 일부 함수를 임의로 인라인 처리하기도 한다.특징함수 호출 오버헤드 제거일반적으로 함수 호출 시, 프로그램은 스택에 매개변수와 반환 주소를 저장하고 복귀하는 오버헤드가 발생한다.인라인 함수는 이러한 과정 없이, 함수의 코드를 호출 지점에 직접 삽입한다.컴파일러의..

언어/C++ 2024.11.24

Call by Value/Call by Reference

Call by Value함수 호출 시 인자의 값 자체를 복사하여 함수에 전달하는 방식이다.함수는 원본 데이터의 복사본을 사용하므로, 함수 내부에서 데이터가 변경되더라도 원본 데이터에는 영향을 미치지 않는다.Call by Reference함수 호출 시 인자의 참조를 전달하는 방식이다.함수는 원본 데이터의 주소를 참조하므로, 함수 내부에서 변경된 내용이 원본 데이터에 반영된다.언제 Call by Value 와 Call by Reference를 사용해야 할까?Call by Value원본 데이터 보호가 중요한 경우 사용한다. 함수 내부에서 인자를 수정하더라도 원본 데이터에 영향을 주기 않아야 할 때 적합하다.데이터의 읽기 전용 연산이나 원본 데이터 변경을 원하지 않는 경우 사용된다.Call by Referenc..

언어/C++ 2024.11.24

추상 클래스/인터페이스

추상 클래스/인터페이스추상 클래스(Abstract Class)추상 클래스는 공통적인 속성과 행동을 정의하는 클래스로, 하위 클래스에서 구현을 강제하고자 하는 추상 메서드를 포함할 수 있다. 추상 클래스는 인스턴스화할 수 없으며, 주로 기반 클래스(base class)로 사용된다.특징추상 클래스는 일반적인 멤버 변수와 구현된 메서드를 포함할 수 있으며, 동시에 순수 가상 함수(C++) 또는 추상 메서드(c#)도 가질 수 있다.상속을 통해 다른 클래스에서 공통 기능을 재사용하면서 특정 메서드의 구현을 강제할 수 있다.추상 클래스 자체로는 인스턴스화 할 수 없고, 반드시 상속받아 구현해야 한다.인터페이스(Interface)클래스가 구현해야 할 메서드의 계약(Contract)을 정의하는 일종의 청사진이다. 인터..

언어/C++ 2024.11.22

async/await

async/await비동기 코드를 더 읽기 쉽게 작성할 수 있도록 도와주는 기능이다. Promise 기반의 비동기 작업을 동기적인 코드 흐름처럼 보이게 하여, 코드의 가독성과 유지보수성을 크게 향상 시킨다.비동기 작업을 처리할 때 콜백 함수나 Promise 체이닝을 사용하던 방식을 async/await를 사용해 더욱 직관적으로 작성할 수 있다.기본 개념async함수 앞에 async 키워드를 붙이면 그 함수는 Promise를 반환하는 비동기 함수가 된다. async 함수는 내부에 await 키워드를 사용할 수 있다.await비동기 작업이 완료될 때까지 기다리는 역할을 한다. await는 Promise가 해결될 때까지 함수의 실행을 일시적으로 멈추고, 결과값을 반환한다. await 키워드는 오직 async ..

언어/Javascript 2024.11.22

Promise

Node.jsPromise비동기 작업을 처리하기 위해 사용되는 객체이다. 비동기 코드를 더 이해하기 쉽게 작성하고, 콜백 지옥을 피하기 위해 도입되었다.Promise란?자바스크립트에서 비동기 작업의 결과를 나타내는 객체로, 결과값을 아직 사용 불가능한 시점과 결과가 사용 가능한 시점을 쉽게 관리할 수 있게 한다. Promise는 아래와 같은 세 가지 상태를 가질 수 있다.Pending : 초기 상태로, 비동기 작업이 아직 완료되지 않은 상태이다.Fulfilled : 작업이 성공적으로 완료된 상태이며, 결과 값(value)가 존재한다.Rejected : 작업이 실패한 상태이며, 오류(reason)가 존재한다.Promise는 상태가 변경되면 해당 상태로 연결된 처리기(handler)가 호출된다.Promise..

언어/Javascript 2024.11.21

24.08.28 CS, C++

CS전략(Strategy) 패턴전략 패턴은 실행(런타임) 중에 알고리즘 전략을 선택하여 객체 동작을 실시간으로 바뀌도록 할 수 있게 하는 행위 디자인 패턴이다. 여기서 전략이란 일종의 알고리즘이 될 수도 있으며, 기능이나 동작이 될 수도 있는 특정한 목표를 수행하기 위한 행동 계획을 말한다.즉, 어떤 일을 수행하는 알고리즘이 여러가지 일때, 동작들을 미리 전략으로 정의함으로써 손쉽게 전략을 교체할 수 있는, 알고리즘 변형이 빈번하게 필요한 경우에 적합한 패턴이다.전략 패턴 구조전략 알고리즘 객체들알고리즘, 행위, 동작을 객체로 정의한 구현체전략 인터페이스모든 전략 구현체에 대한 공용 인터페이스컨텍스트(Context)알고리즘을 실행할 때마다 해당 알고리즘과 연결된 전략 객체의 메소드를 호출한다.클라이언트특..

언어/C++ 2024.08.28

CompareTo

CompareToC#에서 객체 간의 비교를 위해 사용되는 메서드이다.이 메서드는 특정 타입의 두 객체를 비교하여, 그 객체가 다른 객체보다 작거나, 같거나, 큰지를 나타내는 정수 값을 반환한다.CompareTo 메서드는 주로 정렬 알고리즘에서 객체들을 정렬하는 데 사용된다.CompareTo 메서드의 반환값음수 값(’-1’)호출하는 객체가 비교하는 객체보다 작음을 의미한다.0호출하는 객체와 비교하는 객체가 같음을 의미한다.양수 값(’1’)호출하는 객체가 비교하는 객체보다 큼을 의미한다.사용 예제CompareTo 메서드는 주로 IComparable 인터페이스와 함께 사용되며, 기본 데이터 타입과 사용자 정의 클래스에서 사용할 수 있다.기본 데이터 타입 int a = 5;int b = 10;int result..

언어/C# 2024.08.16
728x90