반응형

26

17. 정적(static) 멤버

안녕하세요. 언제나 휴일, 언휴예요. 이번에는 static 키워드를 사용하여 선언하는 정적 멤버에 관해 알아보기로 해요. 멤버의 종류를 나누는 기준은 여러 기준이 있어요. 그 중에 하나가 해당 멤버가 개체의 멤버인지 혹은 형식의 멤버인지로 구분하는 거예요. 이러한 기준으로 구분할 때 형식의 멤버와 개체의 멤버로 구분할 수 있어요. 형식의 멤버는 static 키워드를 사용하여 선언해서 정적(static) 멤버라 부르고 개체의 멤버를 비정적 멤버라 불러요. C++에서 정적 멤버는 형식 정의 내에서 해당 멤버를 static 키워드를 붙여 선언합니다. 정적 멤버들은 개체마다 제공하는 멤버가 아니라 형식 내에 유일한 멤버예요. 학생을 생성할 때 학생의 일련번호를 차례대로 부여한다고 할 때 학생의 일련번호는 각각의..

16. 생성자, 소멸자

안녕하세요. 언제나 휴일, 언휴예요. 이번에는 개체를 생성할 때 수행하는 생성자와 소멸할 때 수행하는 소멸자를 알아보기로 해요. 이번에는 개체를 생성할 때 수행하는 생성자와 소멸할 때 수행하는 소멸자를 알아볼게요. 생성자는 개체를 생성할 때 수행할 기능을 정의하는 특별한 메서드입니다. 생성자는 반환 형식을 개발자가 정할 수 없으며 메서드 이름을 형식 이름과 같게 정의합니다. 그리고 소멸자는 개체를 소멸할 때 수행할 기능을 정의하는 특별한 메서드예요. 소멸자도 반환 형식을 개발자가 정할 수 없으며 메서드 이름은 ~형식 이름이예요. #pragma once //Student.h class Student { public: Student(void);//생성자 ~Student(void);//소멸자 }; C++ 언어..

14. 캡슐화 개요

안녕하세요. 언제나 휴일, 언휴예요. 이번에는 OOP의 특징 중에 첫 번째로 캡슐화에 대해 간략하게 알아보기로 해요. 이제 C++언어에서 캡슐화에 관한 사항을 알아보기로 해요. 캡슐화는 여러 개의 멤버를 하나의 형식으로 묶는 과정을 말합니다. C언어에서는 구조체를 이용하여 캡슐화를 했었죠. C++언어에서도 구조체를 이용하여 캡슐화를 할 수 있습니다. 하지만 일반적으로 클래스를 이용하여 캡슐화를 할 때가 대부분입니다. 먼저 C언어에서의 캡슐화와 C++언어에서의 캡슐화의 차이를 간단하게 알아볼게요. C언어에서 구조체에는 데이터만 멤버 필드(멤버 변수)로 캡슐화할 수 있었죠. 하지만 C++에서는 기능도 멤버 메서드로 캡슐화를 할 수 있습니다. 그리고 C언어에서는 캡슐화한 멤버를 모든 곳에서 접근할 수 있지만 ..

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++에서는 입력 인자로 전달 받아야 할 형식 인자가 같은 두 개의 함수의 이름을 중복 정의할 수 없을 때 두 개의 함수를 구분하기 위한 목적으로 스텁 매개 변수를 정할 수 있어요. 스텁 매개 변수는 입력 매개 변수 형식은 결정하였지만 변수 이름이 없는 매개 변수예요. 단순히 호출하는 곳에서 어느 함수를 호출하는 것인지 구분하기 위한 목적으로 사용하는 것이예요. 예를 들어 사각형의 면적을 구하는 함수와 삼각형의 면적을 구하는 함수를 만든다고 가정해요. 이 때 두 개의 함수는 모두 두 개의 실수를 인자를 받으면 면적을 구할 수 ..

반응형