본문 바로가기

C++10

C++ 프로그램 디자인 C++ 프로그램 디자인 코딩에 들어가기 전에 디자인 내용을 형식화하면 각 부분을 어떻게 연결할지 결정하는 데 도움을 준다. 비슷한 부분이 많은 코드를 하나로 묶어서 코드가 지저분해 지는 것을 막을 수도 있게 된다. 또한 다른 시스템과 연동을 할 때에도 이를 염두 해 두고 코드를 짜는 것과 코드를 우선적으로 짜고 나서 연동할 때에는 크게 차이가 발생하게 된다. C++ 언어는 너무나 많은 기능이 들어가 있다. 객체, 연산자 오버로딩, 예외 처리, 템플릿 등등 여러 다른 기능이 공존하고 있어 디자인 작업을 하는데 어려움을 겪는다. 또한 공용 코드와 재사용 코드를 설계할 수 있는 많은 기능이 있어 디자인을 하는데 신경을 많이 써야한다. C++ 언어에서 근간이 되는 디자인 원칙은 추상화와 재사용이다. 추상화는 내.. 2017. 7. 13.
C++ 문자열 & 코딩 스타일 C++ 문자열 & 코딩 스타일 문자열은 프로그램을 작성할 때 거의 항상 사용된다. C++은 안전하고 사용하기 쉬운 string 클래스를 제공한다. 문자열에 대해서 크기를 자유자재로 바꾸는 것은 물론 부분적으로 추출하거나 바꿀 수 있는 여러 가지 고급 기능을 지원한다. cstring 헤더 파일을 사용하면 C의 여러 문자열을 처리하는 다음의 함수들을 사용할 수 있게 된다. strcpy()는 두 개의 문자열 포인터를 받아서 첫 번째 문자열에 두 번째 문자열을 복사하는데 첫 번째 문자열이 적합한 메모리 공간을 가졌는지 신경 쓰지 않는다. strlen()은 원본 문자열의 크기를 알기 위한 함수인데 리턴하는 값은 무자열의 크기지 실제 필요한 메모리의 크기는 아니다. strcat()은 문자열을 이어 붙이는데 사용한다.. 2017. 7. 12.
C++ 언어의 기초 C++ 언어의 기초 주석은 프로그래머를 위한 것으로 컴파일러는 주석을 무시한다. 주석은 //와 /*를 사용하여 나타낼 수 있다. C++은 세 단계를 거쳐서 빌드 된다. 전처리 작업으로 코드 내에 지시된 메타 정보를 인식하여 자동으로 코드를 수정하고 컴파일 작업으로 소스 코드를 기계어로 번역한다. 마지막 링크 작업으로 기계어로 된 여러 오브젝트 파일을 묶어서 하나의 실행 파일로 만든다. 전처리 지시자인 #include은 헤더 파일의 코드를 가져와서 현재 소스 파일에 삽입하도록 지시한다. #define은 상수나 매크로를 정의하는데 사용되고 #ifdef나 #ifndef는 헤더 파일의 중복 인클루드를 막는 경우에 사용된다. main 함수는 프로그램을 실행할 때 가장 먼저 호출되는 시작점이다. main의 인자로는.. 2017. 7. 11.
C++ 강의 7장 - 참조자(Reference) - C++ 강의 7장- 참조자(Reference) - 변수라고 하는 것은 할당된 메모리 공간에 붙여진 이름이다. 우리는 이 이름을 가지고 해당 메모리 공간에 접근이 가능해진다. 그러면 참조자는 무엇일까? 참조자는 할당된 하나의 메모리 공간에 다른 이름을 붙이는 것을 말한다. 자신이 참조하는 변수를 대신할 수 있는 또 하나의 이름인 것이다. 쉽게 말하면 별명이라고도 할 수 있을 것 같다. 예시를 통해 설명을 들어보자. num1이라는 변수를 우선 선언해보자. 정수의 값을 가지기 위해 int로 num1을 선언한다. 그러면 메모리의 어느 공간에 num1이라는 이름을 부여한다. 그리고 우리는 그 num1이라는 메모리 공간에 10을 선언한다. 그러면 여기서 num1이라는 메모리 공간에 다른 이름도 부여하고 싶다. 그러.. 2017. 4. 24.
C++ 강의 6장 - inline 함수 & 이름 공간(namespace) - C++ 강의 6장- inline 함수 & 이름 공간(namespace) - inline 함수는 다른 언어를 배운 사람들이 보면 조금 생소할 수도 있다. in은 ‘내부’를 의미하고 line은 ‘프로그램 코드라인’을 의미하는 말이다. 따라서 프로그램 코드라인 안으로 들어가 버린 함수라는 의미로 해석할 수 있다. C언어에 대해 먼저 선행을 하였을 경우 매크로 함수에 대해 공부를 하였을 것이다. 매크로 함수는 함수의 결과 값을 도출하는 식을 미리 정의하는 형태를 가진다. 전처리 부분에 함수를 정의한다. #define 매크로 함수명(인수) 치환될 부분 위와 같은 형태로 매크로 함수를 정의하는데 다른 함수들에 비해 일반적으로 실행속도가 빠르다는 이점을 가지고 있다. 매크로의 정의가 전처리 부분에서 되므로 함수의 몸.. 2017. 4. 23.
C++ 강의 5장 - 함수 오버로딩 및 디폴트 값 - C++ 강의 5장- 함수 오버로딩 및 디폴트 값 - 처음부터 예시를 가지고 시작을 해보자. 앞 장에서 사용했던 Add()라는 함수를 계속해서 사용할 것이다. 우리는 두 개의 파라미터를 넣어서 더한 값을 출력하는 Add()라는 함수를 정의했었다. 그리고 우리는 하나의 파라미터를 넣을 경우 그 값에 1을 더한 값을 출력하는 함수를 만들고 싶다. 그리고 우리는 이 함수의 이름도 Add()를 사용하고 싶다. 실제로 C라는 프로그래밍 언어를 사용할 경우 같은 이름의 함수를 사용하는 것을 허용하지 않는다. 바로 에러 메시지를 보내준다.하지만 C++에서는 함수의 이름이 같아도 받는 인자 즉 파라미터의 개수가 다르면 다름을 인정해준다. 융통성이 있는 친구이다. 함수호출 시 전달되는 인자를 통해서 호출하고자 하는 함수의.. 2017. 4. 16.
C++ 강의 4장 - 함수2 - C++ 강의 4장- 함수2 - (함수 리턴 형태) 함수의 이름 (함수 파라미터){ 함수의 내용; return 리턴값;} 함수의 형태에 대해 조금 더 상세히 설명하겠다. 함수의 리턴 형태 :함수의 리턴 형태는 함수가 실행되고 나서 어떠한 값을 나타나게 하겠는가에 대한 질문이다. 만약 int형의 함수 리턴 형태를 선언하면 내가 이 함수를 실행하고 난후에 정수 형태의 값을 반환할거야 라는 것을 의미한다. 우리가 3장의 예시로 사용한 void라는 값은 우리는 어떠한 값도 반환하지 않을 거야라는 것을 의미한다.(void는 빈 공간을 의미하는 단어이다.) 이렇듯 우리가 함수를 정의할 때 어떠한 형태로 사용할 것인지를 설정하는 방법이라고 생각할 수 있다. 그래서 함수의 리턴 형태를 선정하는 것은 매우 중요한 부분 중.. 2017. 4. 9.
C++ 강의 3장 - 함수1 - C++ 강의 3장- 함수1 - C++을 프로그램이 시작되는 부분이 어디라고 했는가? C++강의 1장을 보게 되면 그건 바로 main()함수라고 했다. 실제로 C++ 프로그램은 main()함수만 있으면 돌아갈 수 있다. 하지만 우리가 main()함수만을 사용할 경우 코드의 길이가 엄청 길어지고 코드를 보고 이해하기 힘들어 질 것이다. 왜냐하면 도구가 너무 부족하기 때문이다. 우리가 함수를 이용하는 이유에는 크게 두 가지가 있다.∙반복되는 작업을 쉽게 처리할 수 있다.∙우리가 무슨 작업을 할지 이해하기 쉽다. 반복되는 작업을 쉽게 처리할 수 있다.우리가 프로그램을 사용하는 이유는 반복되는 작업을 수행하기 위해서다. 쉽게 예제를 들어보자. 우리가 만약 계산기를 만들고 싶다고 가정해보자. 우리는 더하기, 빼기 .. 2017. 4. 9.
C++ 강의 2장 -변수와 연산자- C++ 강의 2장- 변수와 연산자 - 변수 C++에서는 각자 변수의 형태를 지정을 해주어야 한다.이러한 지정을 변수 선언이라고 한다. 예를 들면 정수의 숫자를 나타내고자 하는 변수를 나타내고 싶다고 가정을 해보자.그냥 작업창에 3이라고 적으면 그것은 변수가 아니다. 3이라는 값을 가지고 우리가 그 값을 자유롭게 사용할 수 있을 메모리를 만들어 주어야한다. 그러한 모습을 변수라고 한다.그래서 우리는 i라는 문자를 이용하여 그 공간을 지정해주려고 한다.int i = 3; 위의 문장은 i라는 이름을 가진 메모리 공간을 만들어 그 곳의 메모리에 3을 작성하여 i라는 값을 3으로 지정하겠다. 그리고 i라는 값은 정수이다. 라는 의미를 가진다.여기서 우리가 생각할 부분은 정수라는 값이다. int는 정수의 변수를 선.. 2017. 4. 9.
C++ 강의 1장 -Hello World- C++ 강의 1장- Hello World - 프로그래밍 언어를 처음 배울 때 하는 마법과 같은 주문이 있다. 그건 바로 출력창에 Hello World를 쳐보는 것이다. C++가 처음 배우는 언어가 아닐지라도 출력창에 Hello World를 나오게 하는 것으로 언어를 배울 때 무언가 술술 배우는 능력을 얻을 수 있다. 실제로 매우 간단한 프로그램이지만 함수에 대한 기본개념까지 심어주는 매우 좋은 예제이다. 그러니 지금까지도 모든 프로그래밍 언어의 교재 처음 부분에는 Hello World가 있는 이유이다.그래서 첫 번째 강의로는 Hello World를 출력하고 그 프로그램을 해부시켜볼 것이다. 프로그래밍 언어를 배운 사람이라면 main이라는 함수를 알 것이다. 하지만 배우지 않은 사람들을 위해 설명을 하자면.. 2017. 4. 9.