C++/C++ 기본 40

C++에서의 문자열

C++에서의 문자열 1. C 스트링 C 스트링(C-String)은 널 문자('\0' 혹은 0)로 끝나는 char 배열을 말하며, C 언어에서 사용하는 문자열 방식이다. C++에서는 C 언어와의 호환성 때문에 C 스트링을 그대로 사용한다. i.e.char name1[6] = {'G', 'r', 'a', 'c', 'e', '\0'}; //'\0'으로 끝나므로 문자열이다.char name2[5] = {'G', 'r', 'a', 'c', 'e'}; //'\0'으로 끝나지 않으므로 문자열이 아니다. C++ 응용 프로그램은 C 스트링을 다루기 위해 C 프로그래밍에서 사용해왔던 strcpy(), strcmp(), strlen() 등의 C 라이브러리 함수들을 그대로 사용할 수 있다. 이때 이나 헤더 파일을 includ..

C++/C++ 기본 2018.07.01

키 입력 받기

키 입력 받기 물론, C 언어의 gets, getc, getchar, scanf, getch 등의 함수들을 이용해서 입력을 받을 수 있다. 하지만, C++를 배우고 있으니 C++ 고유의 입력 방식에 대해서 알아보도록 하자. 1. cin과 >> 연산자를 이용한 키 입력 C++에서는 표준 입력 스트림인 cin과 >> 연산자를 이용하여 사용자로부터 키를 입력받는다. cin과 >> 연산자도 iostream 헤더 파일에 선언되어 있다. i.e.#include using namespace std; int main() { cout > width; //키보드로부터 정수 값 너비를 읽어 width 변수에 저장 cout > height; //키보드로부터 정수 값 너비를 읽어 height 변수에 저장 int area = w..

C++/C++ 기본 2018.07.01

namespace와 std::

namespace와 std:: 이름 공간에 대한 이해를 돕기 위해 한 가지 예를 들어 보자. 현재 우리 아파트 단지에는 '김철수'라는 이름을 가진 사람이 여럿 살고 있다. 그러므로 우리 아파트 단지에서 '김철수'를 찾고자 하면, 몇 동에 사는 '김철수'인지 구분해야 한다. 1동에 사는 김철수를 "1동::김철수"라고 나타낸다고 했을 때, 1동이 바로 C++에서의 이름 공간이다. 1. namespace 일상 생활뿐 아니라 C++ 프로그래밍 과정에서 이름(identifier)이 충돌하는 경우가 있다. 다음은 이름 충돌이 발생하는 대표적인 경우이다. -프로젝트를 여러 명이 나누어 개발하는 경우- 다른 사람이 작성한 소스 코드나 목적 파일을 가져와서 사용하는 경우 프로젝트를 여러 명이 나누어 개발하는 경우, 한 ..

C++/C++ 기본 2018.07.01

#include <iostream>

#include #include 은 전처리기(C++ Preprocessor)에 대한 지시문으로서, C++ 소스 파일을 컴파일하기 전에 헤더 파일을 읽어 C++ 소스 파일 안에 삽입할 것을 지시한다. C++ 컴파일러는 처음에 전처리기를 호출하여 #include로 된 라인을 모두 처리하도록 한 후, C++ 소스 파일을 컴파일한다. 헤더 파일에는 C++ 표준 입출력을 위한 클래스와 객체가 선언되어 있으므로, 키보드 입력이나 화면 출력을 위해서는 이 헤더 파일가 포함하고 있는 내용이 꼭 필요하다. 다음 문장은 문자열을 화면에 출력하는 코드로서, cout 객체와

C++/C++ 기본 2018.06.29

main 함수

main() 함수 C 언어와 마찬가지로 main() 함수는 C++ 프로그램의 실행 시작점이다. C++ 프로그램에는 반드시 하나의 main() 함수가 존재해야 하며, main() 함수가 종료하면 프로그램이 종료된다. - main() 함수의 표준 형식 ANSI C++ 표준에서 정한 main() 함수의 리턴 타입은 다음과 같이 int이다. int main() { // ANSI C++표준의 메인 함수의 리턴 타입은 int.....return 0; // return 이 실행되면 main() 함수가 종료하고 프로그램이 종료된다. 필요에 따라 0이 아닌 값을 리턴할 수 있다.} 간혹 void를 리턴 타입으로 선언하기도 하는데, 이것은 C++ 표준이 아니다. 대부분의 컴파일러는 이를 문제 삼지 않지만 표준을 지켜주는 ..

C++/C++ 기본 2018.06.29

주석문

주석문 (Comment) 주석문은 프로그램의 실행에 영향을 미치지 않으며 개발자가 프로그램에 대한 설명이나 자유롭게 붙인 특이 사항의 메모이다. C++에는 주석문을 만드는 2가지 방법이 있다. 1. 여러 줄의 주석문을 만드는 것으로 /*와 */를 이용한다. i.e./* 주석 처리되는 문장. C++ 에서는 이렇게 여러 문장을 한꺼번에 주석 처리할 수 있다.*/ C++ 컴파일러는 '/*'와 '*/' 사이의 모든 내용을 주석문으로 처리하여 적법한 C++ 코드가 있어도 무시하고 컴파일하지 않는다. 2. 한 줄짜리 주석문으로 '//'를 이용한다. C++ 컴파일러는 소스에서 '//'를 만나면 그 행의 끝까지 주석문으로 처리하여 무시하고 넘어간다.

C++/C++ 기본 2018.06.29

C++ 언어의 아킬레스건

C++ 언어의 아킬레스건 C++ 언어는 C 코드와의 호환성이라는 중요한 목표로 설계되어, 기조의 C 코드를 재사용할 수 있게 되었지만, 그것으로 인해 객체 지향의 핵심 개념인 캡슐화(encapsulation)의 원칙이 다소 무너졌다. 캡슐화의 기본 원칙은 코드와 데이터를 외부의 접근으로부터 보호하기 위해, 변수와 함수를 캡슐 즉 클래스 안에 선언하도록 하는 강력한 원치이다. Java 언어는 이 원칙을 굳건히 지키고 있지만, C++에서는 C 언어로 작성된 프로그램을 수용하기 위해, 함수 바깥에 전역 변수를 선언할 수 있는 C 언어의 특성을 받아들일 수 밖에 없었다. 결국 이것 때문에, C++에서 클래스라는 캡슐 바깥에 함수나 전역 변수를 만들 수 있게 허용하였으며, C 프로그래밍에 있었던 전역 변수의 사용..

C++/C++ 기본 2018.06.29

C++ 언어의 특징

C++ 언어의 특징 1. C++ 언어의 설계 목표 C++ 언어의 기본적인 설계 목표에 대해서 알아보자. 1) C 언어로 작성된 프로그램과의 호환성(compatbility)을 유지한다. 기존에 작성된 C 프로그램을 그대로 사용할 수 있도록 C 언어의 문법적 체계를 그대로 계승한다. 또한, C 언어로 작성되어 컴파일된 목적 파일(object file)이나 라이브러리를 C++ 프로그램에서 링크하여 사용할 수 있도록 한다. 2) 소프트웨어의 재사용을 통해 소프트웨어 생산성을 높이고, 복잡하고 큰 규모의 소프트웨어 작성, 관리, 유지 보수를 쉽게 하기 위해서 데이터 캡슐화, 상속, 다형성 등의 객체 지향적 개념을 도입한다. 3) 타입 체크를 엄격히 하여 실행 시간 오류의 가능성을 줄이고 디버깅을 돕는다. 4) 실..

C++/C++ 기본 2018.06.29