분류 전체보기
C++, C# 에서 "call by reference" , "pass by reference"
C++에서는 "call by reference"와 "pass by reference"를 구분하여 사용하지 않고, 둘 다 "참조에 의한 호출(call by reference)"이라는 용어를 사용합니다. C#에서는 "pass by reference"를 "참조에 의한 전달"이라는 용어로 사용하고, "call by reference"를 "참조에 의한 호출"이라는 용어로 사용합니다. 즉, C#에서는 "pass by reference"와 "call by reference"를 구분하여 사용합니다. 하지만 C++에서는 둘 다 "참조에 의한 호출"로 통용되며, 구분하여 사용하지 않습니다. 언어마다 쓰는 매개 변수 키워드가 다르다 C++에서는 "call by reference"를 사용할 때 매개 변수 앞에 & 기호를 사용..
레트로의 유니티 게임 프로그래밍 에센스 - 유니런 게임으로 새롭게 배운 점(at Trigger and Collision)
c++과 c# 책을 다 보고 난 후 유니티 게임 공부가 당겨서 다시 하는 중에 몰랐고 그래서 새롭게 알게 된 점을 작성해 보려 합니다. 제가 '이름표는 멈추지 않아!' 라는 2D 플랫포머 게임을 1년 이상 개발하고 구글 플레이 스토어에 런칭까지 하면서 2D 플랫포머 게임은 익숙해졌다고 생각했는데 개발하면서 알았으면 훨씬 좋았던 점을 책 보고 공부하면서 안 내용을 핵심만 작성해 보려고 합니다. 1. 트리거 트리거는 두 (콜라이더 컴포넌트가 포함된)물체중 하나가 충돌할 때 하나 이상 Is Trigger가 체크돼있으면 발동되는 건 알 겁니다. 트리거는 콜리전과 달리 부딪힌 물체와 물리적인 상호작용이 아닌 닿았는지 아닌지만 판단합니다. 그러므로 콜라이더 안에 들어온 오브젝트에 대한 상대 게임오브젝트의 정보가 담..
프로퍼티
객체지향 언어라면 은닉성을 지키면서 개발해야 합니다. private, protect 접근 한정자로 내부 데이터를 외부에서 오면 되지 않게 하고, 이 필드에 접근하는 다른 객체에 public get(), public set() 메서드를 따로 제공합니다. C#도 이 방법을 그대로 사용할 수 있지만, 더 좋은 방법인 프로퍼티를 제공합니다. 솔직히 유니티로 게임을 만들 때 서로 다른 게임 오브젝트 간에 데이터를 읽어오는 작업을 많이 하게 됩니다. 그럴 때마다 은닉성은 개한테 주고 그냥 public으로 선언하고 싶습니다. 물론 게임이 아닌 그냥 클래스를 작성하다 보면 필드를 public으로 선언해버리고 싶은 충동이 들 때가 한두 번이 아닙니다. 데이터가 오염될 수 도 있지만 귀찮습니다. 하지만 프로퍼티를 사용하면..
윈도우에서 제공하는 표준 템플릿 라이브러리 라이브러리(STL)
C++ 표준 템플릿 라이브러리(STL) 템플릿은 일반화된 코드의 형태로 다양한 타입에 대한 처리를 가능하게 합니다. 따라서 라이브러리가 템플릿 형태로 제공된다면 많은 장점이 생기게 됩니다. C++에서는 표준 템플릿 라이브러리(STL)를 제공합니다. 프로그램에서 공통적으로 많이 사용하는 다양한 자료구조(vector, list, deque 등등)와 알고리즘(정렬, 탐색, 힙 등등)들을 템플릿의 형태로 제공합니다. STL에 대해 배우기 전에 가장 많이 사용되는 컨테이너 중 하나인 벡터를 구현해 보고 활용해 보면서 이해하는 과정을 거쳐야 합니다. STL.. 저는 이해하기 많이 어려웠습니다.. 하지만 제가 이해한 부분을 최대한 적어보겠습니다. 위의 이미지는 제가 이해한 내용으로 STL은 컨테이너와 알고리즘 그리고..
일반화 프로그래밍
일반화 프로그래밍: 알고리즘이나 자료구조에 대한 추상적인 개념을 가지고 일반적인 코드로 작성하고, 이것을 다양한 자료형의 객체들에 대해 재사용하는 기법 보통 여러 자료형으로 만들 필요가 있는 함수를 일반화 프로그래밍을 이용해서 만듭니다. C++에서는 템플릿을 이용해 일반화 프로그래밍을 지원합니다. - 템플릿(template)은 다형성의 한 종류로 컴파일 동안 일어나는 정적 다형성이므로 효율적입니다. - 함수 템플릿과 클래스 템플릿이 있습니다. - template와 typename 키워드를 사용하고, typename 다음에 형식 매개변수(또는 타입 매개변수를)를 지정합니다. - 타입 매개변수 리스트에 꺽은 괄호 “”를 사용합니다.이것은 둥근 괄호 “( )”를 사용하는 함수의 매개변수 리스트와 구분됩니..
형 변환
어떤 값을 다른 자료형으로 변수에 저장할 필요가 있을 때 형 변환을 사용합니다. 2022.08.12 - [C++ 프로그래밍/클래스] - 다형성-상속에서의 형 변환 다형성-상속에서의 형 변환 1. 기본 자료형에 대한 형 변환 형 변환이란 특정한 자료형에 속하는 값을 다른 자료형의 값으로 변환하는 것을 말합니다. 다음은 int 값을 double로 변환하는 형 변환이 이루어지는 문장입니다. int onesside-world.tistory.com 위의 블로그에서도 상향 형변환과 하향 형변환을 이용해 부모 객체가 자식 객체가 되었습니다. 이런 형 변환을 더 안전하게 사용하기 위해 C++은 네가지의 형 변환 연산자를 제공합니다. 형 변환 연산자 설명 reinterpret_cast C언어 형변환과 유사함, 무조건적인..
const 중요
const를 이용해 쉽게 상수를 만들어 사용할 수 있습니다. 근데 솔직히 const를 신경 쓰지 않고 코드를 작성해도 프로그램에 오류나 문제는 전혀 없습니다. 그렇다면 왜 쓰는 것일까요? (´・ω・`)? 이유는 개발자의 실수를 줄이기 위해서입니다. 개발자가 무심코 상수를 수정하려고 하면 컴파일러가 에러 메시지를 출력합니다. 저도 책의 예제인 MonsterWorld라는 게임을 이해하고 따라 적으면서 매개변수를 const로 전해줘야 되는걸 예전 버전에서는 안 해도 되다가 현재 버전에서는 필수로 const로 전달해줘야 하는 것 때문에 실수를 방지한 부분이 있습니다. 예를 들어 void print(const char *title = "") {...} 같은 char 포인터나 연산자 중복할 때 bool operat..
예외 처리 방법들
▶일반적인 예외 처리 방법들 일반적인 예외 처리 방법들을 소개하기 위한 분모(bottom)가 0이 되면 안 되는 Rational 클래스를 만들겠습니다. #pragma once #include #include using namespace std; struct NegBotException { int top, bottom; NegBotException(int t = 1, int b = 0) : top(t), bottom(b) {} }; class Rational { int top;// 유리수의 분자 int bottom;// 유리수의 분모(0이 아니어야 함) public: double real() { return (double)top / bottom; //bottom이 0이면 안 됨 } }; 예외 상황에 대한 ..
예외 처리란?
프로그램은 실행되는 동안 개발자가 예상치 못한 다앙한 예외 상황을 맞을 수 있습니다. 예를 들어, 동적으로 메모리를 할당하려는데 메모리가 없거나 배열의 인덱스 범위를 넘는 인덱스를 사용하든지, 때로는 어떤 값을 0으로 나누려는 잘못된 시도가 발생합니다. 따라서, 개발자는 자신의 프로그램이 이러한 예외 조건(exceptional condition)에 대응할 수 있도록 준비하여야 합니다. 오류(error): 메모리가 부족해 프로그램을 더 사용 못하는 경우처럼 치명적인 상황 예외(exception): 배열의 인덱스 범위를 넘는 인덱스를 사용하든지, 때로는 어떤 값을 0으로 나누려는 잘못된 시도 같은 프로그램을 종료할 만큼 심각한 상황은 아닌 상황 예외(exception)는 심각하지 않은 오류를 말합니다. C+..