Game!

Language/C++ (32)

  1. 2022.04.01 [C++] 문법 - 범위 지정 연산자

    C++에서 가장 우선순위가 높은 연산자는 바로 범위 지정 연산자입니다. 범위 지정 연산자(::)는 여러 범위에서 사용된 식별자(identifier)를 식별하고 구분하는데 사용하는 연산자입니다. 이러한 식별자로는 변수, 함수 또는 열거체가 올 수 있습니다. 범위 지정 연산자를 변수의 이름 앞에 붙이면 해당 변수는 전역으로 사용하라는 의미로 쓰이게 됩니다. 또한, 클래스에 이 연산자를 사용하면 네임스페이스 멤버를 식별하거나, 클래스의 정적 멤버를 호출할 수 있습니다. C++에서 범위 지정 연산자를 사용하기 위한 문법은 다음과 같습니다. 문법 1. ::식별자 2. 클래스이름::식별자 3. 네임스페이스::식별자 4. 열거체::식별자 더보기 언리얼 FString::FromInt() 방식은 2번 방식으로, From..

  2. 2018.03.21 C++ for_each 함수

    C++ / for_each 함수 제공하는 반복자 사이의 모든 요소를 각각 방문하여 작업을 처리하는 함수.즉, for_each 함수의 3번째 인자로 전달받은 함수나, 객체의 오버로딩 된 ( )연산자(연산자오버로딩)에 컨테이너 요소 값을 전달하는 것을 의미 ex) ⓛ class CMyClass{public: // (당연히) 퍼블릭으로 해주어야합니다.void operator( ) ( CTestClass& test ){delete test;test = NULL;}} vector vec; // 사이 코드는 초기화 및 값이 들어가있다고 가정합니다.... for_each( vec.begin( ), vec.end( ), CMyClass( ) ); /// vec 변수에 들어가있는 begin부터 end 앞까지의 CTest..

  3. 2018.02.28 wsprintf 정리

    원형   int wsprintf(LPTSTR lpOut, LPCSTR lpFmt, ... ); 인수 1.  lpOut : 완성된 서식이 해당 변수에 담긴다. 최대 길이 1024 바이트.  2.  lpFmt : 서식 문자열, 일반 문자열 사이에 %로 시작되는 서식 포함 가능  3.  ...      : 서식 문자열 내의 서식과 대응되는 변수. 서식의 개수만큼 변수를 제공해야함. ▶ lpFmt, ...  부분은 printf 함수와 동일하며, 해당 완성된 문자열이 lpOut 변수에 담기게 된다 리턴  성공할 경우, 버퍼로 복사된 문자 개수를 리턴해준다. 널 종료 문자는 개수에서 제외됨.  실패할 경우, 예상된 출력보다 더 작은 문자수가 리턴됨. 이 경우 GetLastError 함수로 실패 원인 파악 가능.예제..

  4. 2018.01.10 [C++] 중첩 클래스 사용 이유

    중첩 클래스는 class 내부에 class를 선언하는 것이다 보통, 외부 class에 내부 class를 선언하는 경우에 / 내부 class를 private 으로 정의한다. 왜냐하면, 특정 클래스 안에서만 사용하는, 또다른 클래스 자료형이 필요할 경우에 이러한 방식을 사용하기 때문이다. https://m.blog.naver.com/PostView.nhn?blogId=kks227&logNo=220179773371&proxyReferer=https%3A%2F%2Fwww.google.co.kr%2F

  5. 2018.01.10 문자열 코딩 - [아스키코드, 멀티바이트, 유니코드]

    VS 프로젝트 속성 -> 구성속성을 보면문자 집합으로 2가지를 사용할 수 있다.1. 멀티바이트 문자 집합2. 유니코드 문자 집합  아스키 코드(SBCS) - 모든 문자 하나가 1byte를 차지하며 영어를 표현한다. 하지만 아스키 문자 코드 만으로는 한글이나 일어 등의 다른 문자를 표시할 수 없다.   멀티바이트(MBCS) - 1. 아스키 문자 코드에다가 다른문자(2byte)들을 포함한 문자 집합이다.어떤 문자는 1byte고, 어떤 문자는 2byte이다.정확히는 모르겠지만, 한 문자가 2byte를 넘는 문자도 존재할 것이다. 2. 멀티바이트 문자 집합은 특정 문자 집합마다의 코드페이지가 존재한다.예를 들어, 같은 코드 번호 일지라도 한글 코드 페이지로 해석하면 한글이 나오지만,일어 코드 페이지로 해석하면 ..

  6. 2017.12.28 [C++] variadic template

    variadic template 은... 템플릿의 인자를 가변적으로 받을 수 있도록 구현하는 방식이다 참고)variable argument (다양한 인수의 표현) 이것의 심볼로는 ... 을 사용합니다. variadic template을 함수 템플릿 / 클래스 템플릿 2가지로 나누어서 간략히 설명합니다. 12345678910111213 template // template parameter packvoid Function( const Arg1& arg1, const Args&... args ) // function parameter pack{ Test( arg1 ); Function( args... );} void main(){ Function( 1, "ezreal very handsome", 1.5f )..

  7. 2017.12.27 [C++] 템플릿 이것저것(정리중...)

    템플릿 메타 프로그래밍 일반 함수를 써서 재귀호출을 해야하는 문제를, 템플릿 클래스를 이용하면 똑같이 구현할 수 있다. ▶ 템플릿의 원래 기능이 아니라, 템플릿을 이용해서 문제를 푸는 방법 cf. 재귀 호출 방식으로 템플릿을 계속 생성하는 것은, 잘 알려진 대표 템플릿 메타 프로그래밍의 예 템플릿 메서드 패턴 부모 클래스에서 virtual이 아닌 함수 내부에서, 자식의 virtual 함수를 호출한다 자식의 virtual 함수를 호출 : 객체 생성 타입에 따라 적절한 오버라이딩 호출 템플릿 트릭 템플릿 트릭 중 하나가 템플릿 메소드 패턴을 사용하면 virtual 함수를 런타임 때 테이블로 접근해서 호출하는데 이러한 테이블을 접근하는 시간을 단축하기 위해 해결하는 static polymorphism 방법임 ..

  8. 2015.09.25 [C] 디버깅 중 출력화면에 변수 출력하기

    시간과 같은 변수들은 디버깅할때 유의할 점입니다디버깅시 브레이크를 걸었다 하더라도 시간은 계속 흐르니까요 그래서 시간을 알고 싶을때에는 디버깅 중에 시간을 출력하여 확인할 필요가 있습니다. 디버깅에 시간을 출력하기 위해 필요한 함수 sprintf(_s)OutputDebugStringA sprintf 함수 헤더파일#include 원형int sprintf(char* str, const char* format, .....) 사용법매개변수는 차례대로1. 문자열을 저장할 char*형 변수2. " 문자열 "3. , ... 부분은 문자열에 변수가 들어갈 수 있음 문자열을 저장할 변수는 문자열보다 커야하고문자열 마지막에 NULL 문자를 생각하여 항상 문자열보다 1칸 커야한다 => char buff[100]; sprin..

  9. 2015.09.17 [C++] 메세지 패싱

    메세지 패싱이란 무엇인가  메세지 전달 (message passing) 객체지향 관점에서, 프로그램은 오브젝트에 message를 보내는 것으로 실행   12345678910111213141516#include cstdio> void main(){    Dog* dog1;    dog1 = new Poodle;        dog1.shouting(); //멍멍      Dog* dog2;    dog2 = new Bulldog;        dog2.shouting(); //왈왈    } cs   dog1.shouting();  = 객체 dog1 에 shouting 이라는 메세지를 보낸다실제로는 객체 dog1 의 shouting() 함수 호출 그러니까 dog1 = new Poodle;이거는 실체를 만드는..

  10. 2015.09.11 [C] 2차원 배열 함수의 매개변수로 보내는 방법

    많이 사용하는 2차원 배열을 함수로 보내는 방법 1234567891011121314151617#include void prn(int a[][4], int size); void main(){ int arr[3][4]; prn(arr, sizeof(arr)/sizeof(int));} void prn(int a[][4], int size){ printf("%d \n", a[1][1]);}\cs 3x4 크기의 배열을 arr[3][4] 로 선언하였습니다 13열의 void prn(int a[][4], int size) 이 부분을 보시면 a[][4]로 적혀있습니다 즉, 함수로 이동시킬때에는 2번째 배열크기는 변경하실 수 없습니다앞의 [3] 부분은 변경할 수 있습니다 왜냐하면 arr[3][4] 의 의미는 3개의 배열이..

1 2 3 4