본문 바로가기

전체 글

(130)
초보자를 위한 C++ 200제 42번 문제 해석 피라미드 출력 #include using namespace std; int main() { int offset = 4; for (int i = 1, j = 0; i
템플릿 함수의 고급활용 (특수화) 템플릿 함수의 특수화와 특수화 삭제 템플릿 함수의 특수화 template void Print(T value) { std::cout
함수 템플릿 새로운 용어가 나오면 역시 단어뜻부터 살펴 봐야겠죠 단어의 의미는 본을 뜰 수 있는 형판, 틀과 같은것을 의미 합니다. 그림을 그릴때는 대고 따라 그릴 수 있는 어떤 틀이 되겠네요. C++은 혼합형 언어라고 이야기 합니다. 개발 방식 (패러다임)에 따라 분류 했을 때 그러합니다. 멀티패러다임이라고도 합니다. C언어를 계승해서 발전된 형태이기 때문에 C언어에서 사용되던 패러다임인 절차형 프로그래밍, 함수형 프로그래밍도 사용 가능하고, 객체지향 패러다임도 사용할 수 있습니다. 이런 패러다임 중에서 타입에 관계없이 동작하는 함수와 클래스를 작성하는 기법을 일반화 기법이라고 하는데, 이 일반화 기법을 템플릿을 통해서 효율적으로 구현할 수 있게 됩니다. 먼저 템플릿을 사용하지 않고 일반화를 구현하는 방법이 어떤 ..
UI에는 코루틴을 사용하지 않는다. 왜 그럴까? UI에서 는 항상 유저가 주어진 것중 하나를 선택 하는 상호작용이 일어나기 때문에 이벤트를 예측할 수가 없다. 자동으로 발생하는 어떤 이벤트를 계획하고 있지 않는 한 코루틴을 사용할 일이 없기 때문에 UI에서는 코루틴을 쓸 일이 없다고 봐도 무방하다.
소멸자의 virtual 선언 저번 시간에 virtual의 개념에 대해서 학습 했습니다. 이번에는 소멸자(Deconstructor) 를 가상으로 선언하는 이유에 대해 예제를 통해서 알아 보겠습니다. #include class Food { public: Food() { printf("Food 가 생성 되었습니다.\n"); } ~Food() { printf("Food가 소멸되었습니다.\n"); } }; class Chicken : public Food { public: Chicken() { printf("Chicken이 생성되었습니다.\n"); } ~Chicken() { printf("Chicken이 소멸되었습니다.\n"); } }; int main() { Food* pF; pF = new Chicken; delete pF; } 위 예제..
무기클래스 설계하기 인터페이스를 제공하는 이유는 재사용성 때문이다. 무기 클래스에 기본적인 무기 종류들을 넣고 각각의 무기 클래스에 세부적인 딜레이라던지 총알 갯수라던지 사거리라던지 유니티는 Depth가 얕다. 많은 빌드를 거쳐 만들어지는 파일인 만큼 복잡도가 매우 높기 때문에 메모리 해제가 잘 안되는 현상이 발생한다. 이런 문제가 있어, 유니티를 설계를 하거나 클래스를 만들 때, 상속이라는 개념을 거의 사용하지 않는다. 1~2단계 이상 상속이 발생할 경우 복잡도가 굉장히 높다고 보면 된다. (거의 사용하지 않는 개념) 싱글턴을 사용해서 인스턴스를 공유하고 있는 클래스는 사실상 메모리해제가 안된다고 보면 된다. 모노를 상속받아서 쓰는 클래스는 메모리해제가 잘 되는 편. 유니티가 왜 컴포넌트 방식을 권장하는지 알 수 있다. ..
LINQ(Language-INtegrated Query) LINQ는 데이터 질의(Query) 기능을 C#에서 사용할 수 있는 기술이다. 쉽게 설명하자면 C#의 배열, 컬렉션, XML, DataSet 등 내가 원하는 데이터만 가져오고 싶은 경우 사용할 수 있는 기술이라고 말할 수 있다. 분기문을 사용하지 않고도 원하는 데이터를 한번에 출력할 수 있다. using System; using System.Collections.Generic; using System.Linq; using System.Reflection; using System.Security.Cryptography; using System.Text; namespace LINQ { class Program { static void Main(string[] args) { string[] strArr = {..
가상함수 Virtual과 오버라이딩 1. 다형성이란? 가상함수 Virtual Functions 은 객체지향 프로그래밍에서 다형성을 완성시켜주는 개념입니다. 다형성(polymorphism)이란 한자의 뜻을 풀자면 형태가 다양하다는 뜻이 되겠습니다. 여기서 형태는 당연히 자료형, 즉 객체가 되겠구요 객체 지향 프로그래밍의 4가지 특징ㅣ추상화, 상속, 다형성, 캡슐화 - (codestates.com) 객체 지향 프로그래밍의 4가지 특징ㅣ추상화, 상속, 다형성, 캡슐화 - 객체 지향 프로그래밍은 객체의 유기적인 협력과 결합으로 파악하고자 하는 컴퓨터 프로그래밍의 패러다임을 의미합니다. 객체 지향 프로그래밍의 기본적인 개념과 그 설계를 바르게 하기 위 www.codestates.com 국내에서 객체 지향의 개념을 이것보다 잘 정리해 놓은사이트는 찾..