cout프로그램에 무언가를 출력하기 위한 함수이다.C++의 스트림 유형의 객체 출력하려는 값의 자료형을 컴파일러가 검사할 수 있다.출력하려는 값의 형에 따라 적절한 함수를 호출한다.모양cout "C++";객체 삽입연산자 문자열 방향이 정보의 흐름을 상징cout : 문자열(string), 수(number), 문자(character) 들을 포함한 여러 가지 다양한 정보들을 출력하는 방법을 알고있는, 미리 정의 된 객체 cout headercout을 사용하려면 iostream을 include 해야 한다.1#include iostream>cscout 예제12345678#include iostream> int main(){ std::cout "Hello C++" std:..
리플렉션 (Reflection)➡️ 어떤 Type에 대한 정보를 가져오거나 접근하는 등의 작업을 런타임에 동적으로 수행할 수 있도록 해주는 기능이다.리플렉션을 사용하면 런타임에서 메서드를 호출하거나 필드의 값을 바꾸는 등의 작업을 할 수 있다. 다음은 리플렉션을 이용해서 할 수 있는 것들이다.어셈블리 내의 형식에 대한 메타데이터에 접근할 수 있으며, 여기는 전체 형식 이름, 멤버 이름, 특성 등이 포함된다.컴파일 타임에 정의되는 바인딩 대신 메타데이터를 사용해서 런타임에 동적으로 형식의 멤버를 호출할 수 있다.리플렉션은 어셈블리에 포함된 메타데이터를 검사하는 프로세스다.리플렉션을 통해 어셈블리 내의 모든 형식을 열거하고 특정 조건에 부합하는 정보를 찾는 것이 가능하다.형식에 접근할 때는 System.Ty..
템플릿(Template)함수나 클래스를 개별적으로 다시 작성하지 않아도, 여러 자료 형으로 사용할 수 있도록 하게 만들어 놓은 틀이다.템플릿을 사용하면 타입마다 별도의 함수나 클래스를 만들지 않고, 여러 타입에서 동작할 수 있는 단 하나의 함수나 클래스를 작성하는 것이 가능하다.C#의 제네릭과 비슷하다고 생각하면 된다. 함수 템플릿(Function Template)클래스 템플릿(Class Template)이렇게 두 개로 나뉜다.함수 템플릿(Function Template)함수의 일반화된 선언을 의미한다. 함수 템플릿을 사용하면 같은 알고리즘을 기반으로 하면서, 서로 다른 타입에서 동작하는 함수를 한 번에 정의할 수 있다.임의의 타입으로 작성된 함수에 특정 타입을 매개변수로 전달하면, C++ 컴파일러는 해..
Inline 함수C++에서 함수의 호출은 꽤 복잡한 과정을 거치므로, 약간의 시간이 걸리게 된다.이때 함수를 실행하는 시간이 오래 걸린다면, 함수를 호출하는데 걸리는 시간은 전혀 문제가 되지 않는다.하지만 함수의 실행 시간이 매우 짧다면, 함수 호출에 걸리는 시간도 부담이 될 수 있다.C++에서는 이러한 경우에 사용할 수 있는 인라인 함수(inline function)라는 것을 제공한다.인라인 함수는 호출될 때 일반적인 함수의 호출 과정을 거치지 않고, 함수의 모든 코드를 호출된 자리에 바로 삽입하는 방식의 함수이다.이 방식은 함수를 호출하는 데 걸리는 시간은 절약되나, 함수 호출 과정으로 생기는 여러 이점을 포기하게 된다. 따라서 코드가 매우 적은 함수만을 인라인 함수로 선언하는 것이 좋다. ⚠️인라..
함수 호출 규약Calling Convention, 해석하면 '함수 호출 규약' 이란 어떤 함수를 호출 할 때, 그 함수의 파라미터(인자)를 어떤 방식으로 전달하는가에 대한 하나의 약속이다.함수를 호출 할 때, 프로세스에 정의되어있는 스택 메모리 공간을 이용해서 파라미터를 함수로 전달하게 되고, 이 스택 메모리 공간은 프로세스가 실행 될 때에 해당 PE헤더에 스택 메모리의 크기가 명시되어 있다. 스택에 저장되는 값들은 임시적인 값들이기 때문에 더이상 사용하지 않더라도 값을 지우거나 하지 않는다, 굳이 지우려고 하지 않더라도 스택에 다른 값을 입력할 때 저절로 덮어 쓰기 때문에 불필요한 CPU 자원 소모의 낭비를 막기 위해서 그대로 내버려 둔다.주요한 함수 호출 규약cdeclstdcallfastcallcde..
★KEYWORD★메모리 관련 3가지 주요 특성인 용량, 접근, 속도, 비용 간의 절충관계를 파악해 필요에 따라 채택할 수 있게 나타낸 구조 / 레지스터, 캐시 : CPU 내부에 존재하고 CPU 빠르게 접근 가능 / 메모리 : CPU 외부에 존재하고 CPU 느리게 접근 / 하드 디스크 : CPU 직접 접근 불가하고 데이터를 메모리로 이동시켜 접근 가능하지만 아주 느림 메모리 계층 구조(Memory Hierachy)메모리를 필요에 따라 여러 가지 종류로 나누어 둠을 의미한다. 이때 필요한 대부분의 경우 CPU가 메모리에 더 빨리 접근하기 위함이다. 메모리 계층 구조를 바탕으로 컴퓨터의 설계에 있어 상황에 맞게 여러 장치를 각각의 역할이나 특징을 기반으로 사용할 수 있도록 하여 최적의 효율을 낼 수 있도록 한..