반응형

언어 자료구조 알고리즘/디딤돌 C++ 87

17. 정적(static) 멤버

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

16. 생성자, 소멸자

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

15. 접근 지정자

안녕하세요. 언제나 휴일, 언휴예요. 이번에는 캡슐화에 관한 문법 중에 멤버의 가시성을 설정하는 접근 지정자를 살펴보아요. 이번에는 멤버의 가시성을 설정하는 접근 지정자에 관해 알아볼게요. C언어의 구조체는 모든 곳에서 모든 멤버를 접근할 수 있어요. 이러한 특징은 개발자가 멤버에 접근하기 쉬워서 구현하기 쉽게 생각할 수 있지만 시나리오에 맞게 데이터를 유지하는 것은 어려울 수 있어요. 예를 들어 설명할게요. 프로그램에서 이름, 번호, 아이큐를 멤버로 갖는 학생 형식이 있다고 가정합시다. 학생 개체는 생성할 때 이름과 번호를 부여하고 아이큐는 100으로 설정하기로 해요. 그리고 학생이 공부하면 아이큐가 공부한 시간만큼 증가하게 만들거예요. 단 아이큐는 300을 넘지 않게 하기로 해요. 그런데 학생 개체를..

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로 감싸게 ..

반응형