반응형

디딤돌C++ 13

13. OOP 개요

안녕하세요. 언제나 휴일, 언휴예요. 이번에는 C++ 언어의 주요한 특징인 OOP(Object Oriented Programming, 개체(객체)지향 프로그래밍)에 관해 간략히 알아보기로 해요. 이제 C++언어가 갖는 주요 특징인 OOP(Object Oriented Programming, 개체(객체) 지향 프로그래밍)에 관한 사항을 다루기 시작할게요. 특히 OOP에 관한 특징들은 클래스 문법을 통해 다룰거예요. OOP란 프로그램의 세계를 현실 세계를 반영하자는 것에서 출발했어요. 우리가 사는 현실 세계는 수 많은 생명체들이 메시지를 서로 주고 받으면 살아가고 있어요. 이처럼 프로그램도 개체들이 서로 메시지를 주고 받으며 동작하게 하자는 것이죠. 그런데 프로그램에서는 개체를 만들기 위해서는 먼저 형식 정의..

12. string 형식 개요

안녕하세요. 언제나 휴일, 언휴예요. 이번에는 STL(Standard Template Library, 표준 템플릿 라이브러리)에서 제공하는 string 형식을 간단하게 알아보아요. 이번에는 문자열을 표현하기 쉽게 STL(Standard Template Library, 표준 템플릿 라이브러리)에서 제공하는 string을 살펴보기로 해요. 여기에서는 string 형식의 기본적인 사용 방법 위주로 설명할 거예요. 아직 클래스에 관한 문법을 다루지 않은 상태에서 정확히 전달하는 것은 큰 의미도 없고 전달하기도 힘들어요. 먼저 string 형식을 사용하려면 string 파일을 포함하고 using namespace std; 문을 작성하세요. #include using namespace std; 여기에서 포함한 st..

11. 논리 형식 bool 제공

안녕하세요. 언제나 휴일, 언휴예요. 이번에는 C언어에는 없는 형식으로 C++언어에서 제공하는 논리 형식 bool을 알아보기로 해요. C언어에서는 논리 형식을 제공하지 않아요. 대신 0은 거짓으로 취급하고 0 이외의 것은 참으로 판별하죠. 그리고 연산 결과가 거짓이면 0, 참이면 1이었어요. C++언어에서는 높은 가독성과 신뢰성을 높이기 위해 논리 형식 bool을 제공하고 있어요. bool 형식 변수에는 값으로 true와 false를 사용할 수 있어요. 하지만 C++언어에서는 여전히 0은 거짓으로 취급하고 0 이외의 것은 참으로 판별하고 있습니다. //논리 형식 bool 사용 #include using namespace std; bool IsEvenNumber(int num); void main() { ..

10. 신뢰성 강화 (열거형)

안녕하세요. 언제나 휴일, 언휴예요. 이번에는 C++언어가 C언어보다 신뢰성을 강화한 문법 중에 열거형을 알아보기로 해요. C++언어는 C언어보다 자료 형식에 관한 부분에서 신뢰성을 강화하고 있어요. 먼저 C언어에서는 열거형 변수에 정수 형식을 대입하거나 초기화를 하는 것이 가능합니다. //C언어에서의 열거형 사용 //Program.c #include enum Gender { FEMALE, MALE }; int main() { enum Gender g = 3;//C언어에서는 열거형 변수에 정수형을 대입 및 초기화 가능 printf("g is %d\n",g); return 0; } ▷ 실행 결과 g is 3 하지만 C++에서는 열거형 변수에 정수 형식을 대입하거나 초기화할 수 없어요. 다음은 열거형 변수에..

9. 레퍼런스 변수

안녕하세요. 언제나 휴일, 언휴예요. 이번에는 다른 변수를 참조하는 레퍼런스 변수를 알아보기로 해요. C++언어에서 변수 선언문에서 &를 사용하는 참조 변수 선언을 제공하고 있습니다. 참조 변수는 별도의 메모리를 할당하지 않고 변수 선언문에서 초기화에 사용한 변수의 메모리를 참조하여 사용합니다. #include using namespace std; int main() { int i =0; int &r = i; //r은 i변수를 참조 r = 9; //i=9;와 같은 결과(r 변수는 i변수를 참조) cout

8. 이름 충돌을 방지하는 namespace

안녕하세요. 언제나 휴일, 언휴예요. 이번에는 이름 충돌을 방지하는 namespace 문법을 알아보기로 해요. C++언어는 이미 만들어진 지 30여년이 지났습니다. 이러한 역사 속에서 처음에는 없었던 문법이 새롭게 추가한 것들도 있습니다. 이렇게 새롭게 추가한 문법 중의 하나가 namespace죠. 이미 앞에서 cin과 cout을 사용하기 위해 using namespace std; 문을 사용했었죠. 여기에서 namespace 문법을 다루고 나면 왜 이러한 구문을 사용하였는지를 알 수 있을 거예요. namespace는 같은 이름을 충돌하지 않게 하는 문법이예요. 수 많은 라이브러리를 만들어지고 있는데 서로 다른 라이브러리에 같은 이름의 형식이나 개체가 있을 때 충돌이 나지 않게 namespace로 감싸게 ..

7. 매개 변수 이름이 없는 스텁 매개 변수

안녕하세요. 언제나 휴일, 언휴예요. 이번에는 매개 변수 이름이 없는 스텁(Stub) 매개 변수를 알아보기로 해요. C++에서 함수 중복 정의가 가능한 것은 이미 앞에서 다뤘어요. C++에서는 입력 인자로 전달 받아야 할 형식 인자가 같은 두 개의 함수의 이름을 중복 정의할 수 없을 때 두 개의 함수를 구분하기 위한 목적으로 스텁 매개 변수를 정할 수 있어요. 스텁 매개 변수는 입력 매개 변수 형식은 결정하였지만 변수 이름이 없는 매개 변수예요. 단순히 호출하는 곳에서 어느 함수를 호출하는 것인지 구분하기 위한 목적으로 사용하는 것이예요. 예를 들어 사각형의 면적을 구하는 함수와 삼각형의 면적을 구하는 함수를 만든다고 가정해요. 이 때 두 개의 함수는 모두 두 개의 실수를 인자를 받으면 면적을 구할 수 ..

6. 디폴트 매개 변수

안녕하세요. 언제나 휴일, 언휴예요. 이번에는 디폴트 매개 변수를 알아보아요. C++언어에서는 함수 입력 매개 변수 중에 디폴트 값을 설정할 수 있습니다. 이러한 디폴트 매개 변수는 대부분 같은 값을 전달할 때 호출하는 곳에서 인자를 전달하지 않아도 사용할 수 있게 해 줍니다. 만약 호의 면적을 구하는 함수에 반지름과 각도를 입력 매개 변수로 받게 하였을 때 각도의 디폴트 값을 2*PI로 설정한다고 가정할게요. 이와 같이 정의하면 호출할 때 반지름만 전달하면 각도는 디폴트 값을 사용하여 계산합니다. 물론 호출하는 곳에서 원하는 각도를 전달할 수도 있어요. //디폴트 매개 변수 //Program.cpp #include using namespace std; double CalculateArea(double ..

5. 함수 중복 정의(Function Overloading)

안녕하세요. 언제나 휴일, 언휴예요. 이번에는 같은 이름을 중복 정의할 수 있게 하는 함수 중복 정의(Function Overloading)을 알아보기로 해요. C언어에서는 같은 이름을 갖는 함수를 정의할 수가 없죠. 하지만 C++언어에서는 같은 이름을 갖는 함수를 정의할 수 있어요. 이와 같은 문법을 함수 중복 정의(Function Overloading)라고 불러요. C++에서는 개발자가 정의한 코드를 컴파일 과정에서도 전개합니다. 함수 중복 정의가 대표적인 컴파일 과정에 전개하는 문법이예요. C++컴파일러는 개발자가 정의한 함수 명을 입력 매개 변수 리스트에 따라 유일한 이름의 함수 명으로 결정하는 함수 코드화(부호화) 과정이 있어요. 이러한 컴파일 전개가 있어서 같은 이름의 함수를 정할 수 있어요...

4. 태그 명을 형식 명으로 사용

안녕하세요. 언제나 휴일, 언휴예요. 이번에는 C++언어에서 제공하는 편의성 중에 태그 명을 형식 명으로 사용하는 것을 알아보아요. C++언어에서는 신뢰성에 문제가 되지 않는 범위에서 사용자에게 많은 편의성을 제공하고 있어요. 특히 태그 명을 형식 명으로 사용할 수 있어서 변수 선언에 태그 명을 사용할 필요가 없어요. 태그 명은 구조체, 공용체, 열거형을 정의할 때 사용하는 struct, union, enum 과 같은 키워드예요. C언어에서는 태그 명을 형식 명으로 사용할 수 없어서 struct, union, enum 같은 키워드도 같이 사용해서 변수를 선언해야 하죠. 이러한 불편함을 덜기 위해 typedef 문을 통해 형식 명을 정의해서 사용했어요. 하지만 C++에서는 태그 명을 그대로 형식 명으로 사..

반응형