프로그래밍 공부

서울게임아카데미 교육과정 6개월 C++ ~ DirectX2D 76

카테고리 설명
  • C++의 클레스에서 static 변수는 선언시 부터 전역번수로 취급된다. 일반적으로 class에서 변수가 선언되면 변수는 class가 선언되기 전 까지 메모리에 할당이 안된다. 그러나, 그 내부에서 변수를 static 선언하여. 전역변수 취급으로 선언할 경우 메모리 내부에 해당 static 변수의 영역 할당이 이루어진 다음 class 선언이 이루어지고 할당된 영역을 사용하게 된다. 이는. static 이 전역처리되어. 모든 영역에서 사용이 가능해야 하기 때문에, 미리 데이터 영역을 할당하여 권한 문제가 발생하지 않도록 하기 위함이다. 다음 코드 예시로부터 살펴보자. 위 코드에서. class 내부의 static과 static const 가 선언되어 있는 12번째 변수와 15번째 변수를 확인할 수 있다. s..

  • Class의 함수는 헤더와 cpp로 분리하여 사용할 수 있다. 위와 같이 헤더에는 선언된 함수의이름과 반환형을 선언해주고. cpp에는 해당 함수가 동작하는 동작문을 같은 이름으로, Class의 이름과 함께 선언해주면 된다. 위 13번 문단을 해석해보면, Calcu값을 리턴으로 돌려주는, Calcu라는 Class에 속한 Sub라는 함수가 int형의 value매개변수를 받아서 동작한다. 라는 뜻이다. 또한, 헤더 에서 cpp로 함수명을 가져올 때 에는 inline이 선언된 것과 같은 효과를 가지는데, 일반적인 함수에 비해 실행속도에 더 큰 이득이 있다. 상수화 시킨 Class에서 어떠한 변수를 수정해야할 경우 mutable 을 사용한다. 만약의 상황에서 cosnt 선언된 것이 변환되어야 할 경우 사용할 수 ..

  • C++에서는 Class 기능을 지원한다. 이것은 객체지향형 프로그래밍의 첫 단추로써 중요하다 할 수 있다. Class는 기본적으로 C에서 사용하던 Struct와 크게 다르지 않으며, C++에서 넘어오면서 Struct의 불편함을 수정하는 형태로 Class가 만들어졌다. Clss로 묶는것 자체가 캡슐화 한다. 라고 볼 수 있다. 다음은 Class의 기본 예시이다. class 기반의 프로그래밍은 객체지향이기 때문에, 절차형과 다르게 private코드는 그자리에서 내부처리만 되게 만들어야 한다. 오버헤드가 발생하여 코드의 처리속도가 많이 느려질 수 있지만, 오류를 줄이는것을 더 중요하게 여기는것이 객체지향 프로그래밍의 원칙이다. 다음은 객체지향 프로그래밍의 예시이다. 위 코드에서 class 코드의 위쪽 38 ~..

  • C++에서는 함수 오버로딩 을 허용한다. 그러나, 함수 오버로딩을 사용하지 않고도 비슷하게 사용할 수 있는 기능이 있다. 이를 template이라고 한다. 다음은 오버로딩 을 하지 않고도 template를 사용하는 예시이다. C++에서는 오류 검출을 위한 assert를 지원한다. 자세한 설명은 링크를 참조. C++에서는 functional 방식을 지원한다 자세한 설명은 링크를 참조. C++에서는 가변인자 함수 형식을 지원한다. 자세한 설명은 링크를 참조. C++과 C,JAVA등 프로그래밍의 대부분 종류는 POP와 OOP로 구성되어있다. 프로그래밍 패러다임.(Programming Paradigm) 이라고 한다. OOP 프로그래밍은 객체지향적 프로그래밍 이기 때문에 4가지 특징을 가지게 된다. 자세한 설명은..

  • C++에서는 구조체를 선언하고 내부에 함수를 생성해줄 수 있다. 그러나, 구조체는 선언전에 메모리할당이 발생하지 않는다. 그럼으로 함수는 CODE 영역에 메모리가 할당되어 실행되게 되는데. 구조체 안에 함수가 존재하지 않음으로 사실 구조체는 함수를 실행할 수 없다. 구조체 내부에서 함수를 선언하고 실행하는건 다음과 같은 방식을 따른다. Print함수가 구조체 내부에서 선언됨을 볼 수 있다. 그러나, 함수는 구조체 내부에 존재하여도 구조체는 선언 전에 메모리 할당이 일어나지 않음으로 함수 메모리에 존재하나. 실행할 수 없다. 그럼으로 구조체 내부에 존재하는 함수는 __thiscall 을 내부에 붙여서 구조체 내부에서 함수를 다시 호출해준 뒤. 괄호 안에 자신의 구조채를 선언하여 동작하게 된다. 즉, 위에서..

  • C와 C++의 메모리 동적할당을 알아보자. C에서 사용하는 메모리 동적할당은 다음과 같다. C언어에서는 malloc 과 calloc 그리고 realloc 을 사용하고, free를 통해서 동적할당된 변수를 날려줄 수 있다. 그러나 C언어에서의 동적할당은 free이후 메모리의 주소값이 들어있는 포인터를 NULL로 초기화 해주어야 했다. C++에서의 동적할당을 살펴보자. C++에서는 동적할당 시 C와 다르게 생성할 조건을 형변환 하지 않아도 자동으로 형변환 해주는 시스템을 가지고 있다. 다음을 살펴보자. delete 문을 사용하여 동적할당 된 포인터 변수를 초기화 해줄수 있고 따로 포인터변수를 NULL로 초기화 하지 않아도 된다. 그 외에도 해당되는 사이즈를 직접 초기화 해줄 수도 있다. new로 생성되는 동..