[TechDays Korea 2015] 녹슨 C++ 코드에 모던 C++로 기름칠하기Chris Ohk
기존에 작성해 놓은 C++ 코드에 모던 C++를 적용하기는 쉽지 않습니다. 막상 개선하려고 마음먹었다고 해도, 어디서부터 바꿔야 할 지 막막하기만 합니다. 이 세션에서는 기존 C++ 코드에서 모던 C++를 적용해 프로그램의 구조와 성능을 개선하는 방법에 대해서 설명합니다. 그리고 기존 C++ 코드에 모던 C++를 적용할 때 주의해야 될 점에 대해서도 살펴봅니다.
C++은 10년 만에 C++11/14를 발표하면서 '모던 C++'이라는 이름으로 발전했습니다. 그만큼 새로운 기능들이 많이 추가되었습니다. 그리고 2017년, C++은 C++17이라는 이름으로 또 한 번의 발전을 준비하고 있습니다. 3년 주기로 빠르게 변화하는 모던 C++에 대비하기 위해, C++17에 추가될 주요 기능들을 살펴보고자 합니다.
이 발표는 이전에 발표했던 내용에서 일부 사례 추가 및 최신 내용으로 갱신한 버전입니다.
[KGC2014] 두 마리 토끼를 잡기 위한 C++ - C# 혼합 멀티플랫폼 게임 아키텍처 설계Sungkyun Kim
이미 많은 개발자들이 C#의 장점을 누리고 있으나, 본 PT에서는 높은 성능과 생산성을 동시에 달성하기 위해 C/C++로 개발된 native 게임 코드에 스크립트 언어로서 C#을 통합 할 수 있는 방법을 제시한다. 이를 위해 오픈소스 .Net 프레임웍인 Mono의 사용방법과 모바일 플랫폼에서의 특이사항들을 자세히 설명한다.
또한, C/C++언어에 C#을 비롯한 다양한 스크립트 언어를 효율적으로 혼합하여 게임을 구현할 수 있는 아키텍처를 제시한다. clang과 reflection을 이용하여 서로 다른 언어 간 인터페이스 노출을 자동화하고, 게임 내 오브젝트의 생명주기를 자동으로 관리할 수 있는 기법에 대해 설명한다.
6. http://blog.naver.com/ruvendix
함수 오버로딩
C++은 매개변수의 형식과 개수로
함수를 구분할 수 있다!
Show라는 식별자는 같지만 전부 다 다른 함수!
void Show(void);
void Show(int iNum);
void Show(int *pNum);
void Show(double dNum);
Show();
Show(10);
Show(&iAge);
Show(10.26);
7. http://blog.naver.com/ruvendix
기본 인자
C++에는 오른쪽 매개변수부터
기본 인자를 설정할 수 있다!
기본 인자는 오버로딩에 영향을 줄 수 있음!
void CheckButton(int iNum, bool bCheck = false)
{
if (bCheck == true)
{
cout << “버튼 클릭!n”; // 이렇게도 가능
}
}
9. http://blog.naver.com/ruvendix
동적할당 연산자 new와 delete
C++에는 동적할당 연산자인
new와 delete가 있다!
어떻게 보면 malloc()과 free()와 비슷하지만
new와 delete는 함수가 아니라 연산자!
int *pNum = new int; // int 1개 할당
int *pNumList = new int[10] // int 10개 할당
delete pNum; // 단위 공간 해제
delete[] pNumList; // 연속 공간 해제
10. http://blog.naver.com/ruvendix
구조체의 확장
C++의 구조체는 함수를 가질 수 있다!
그리고 구조체 변수를 선언할 때 struct를 생략할 수 있다!
struct StudentInfo
{
char Name[20];
ShowInfo(void)
{
cout << Name << endl;
}
}
StudentInfo Student = {“박미송”};
Student.ShowInfo();