본문 바로가기

C++ 객체지향프로그래밍 수업

(5)
[C++] 9주차 실습: 추상 클래스 구현 연습, HDC 9주차 실습 이번 시간에는 추상 클래스 구현하기를 연습한다. QUIZ 01 #include using namespace std; class Shape { protected: virtual void draw() = 0; public: Shape() {} virtual ~Shape() {} void paint(); }; void Shape::paint() { draw(); } class Circle :public Shape { virtual void draw() override; }; void Circle::draw(){ cout
[C++] 4. stream(스트림) 10주차 수요일 수업 이번 시간에는 stream iniput/output에 대해 배운다. stream의 근본 stream(스트림)은 내 코드와 장치(키보드, 모니터, 파일, 네트워크...)를 연결해 주는 객체이다. 예를 들어 내 코드에 cin을 썼다면 프로그램에서 입력을 받아 그 값을 내 코드에 집어 넣을 수 있다. 이 때 cin이 stream객체이다. stream은 buffer(버퍼)를 거쳐서 장치와 연결된다. 예를 들어 키보드에서 'a'입력이 들어오면, 바로 프로그램에 출력하는 게 아니라 buffer에 저장해 뒀다가 개행문자가 들어오거나 buffer가 꽉 찼을 때 한 번에 buffer를 싹 비운다. input은 장치에서 메모리로, output은 메모리에서 장치로 byte가 흐르는 것이다. input(..
[C++/Polymophism] 3. abstract class는 pure virtual function을 갖고 있는 class이다. 9주차 수요일 이번 시간에는 pure virtual function(순수 가상함수)과 abstract class(추상 클래스)에 대해 배웠다. pure virtual function은 함수 정의가 없는 함수이다. 만드는 방법은 아래와 같다. virtual void print() = 0; 그냥 정의이기 때문에... 그냥 알고 쓴다. abstract class는 pure virtual function을 가지고 있는 class이다. 이것도 그냥 정의이다. 알고 쓴다. 왜 쓰는지는 다음 시간에 설명해 준다고 하셨다. abstract class는 instantiate(인스턴스화) 시킬 수 없다. 하지만 *와 &로는 이용 가능하다. concrete class는 상속받은 abstract class의 pure virt..
[C++/polymophism] 2. overriding된 함수를 사용하려면 virtual로 선언해 주어야 한다. 7주차 금요일 수업 오늘은 virtual function(가상함수)에 대해 배운다. function overriding 함수의 overriding이란 자식 class에서 부모 class의 함수를 재정의하는 것이다. 부모 class에 있는 함수가 자식 class에서 사용할 때는 다른 행동을 하도록 만들 수 있다. 이렇게 부모 class에 있는 함수를 자식 class에서 재정의하는 것을 ovrride한다고 한다. 함수의 overloading이 어떤 함수의 signature를 다르게 해서 이름은 같은데 기능은 다른 함수를 한 개 더 만들어 주는 거라면, overriding은 부모 객체에서 선언한 함수를 자식 객체에서 아예 다시 정의하는 거다. 그래서 overloading과는 다르게 함수를 overriding할..
[C++/polymophism] 1. Base class의 pointer에 자식 클래스의 주소를 담을 수 있다. 7주차 수요일 수업 이번 시간에는 polymophism(다형성)에 대해 배운다. polymophism(다형성)이란 동일한 행동에 대해 다른 결과가 나오는 것이다. 예를 들어, 사람이라는 base class와 학생, 배우, 가수라는 derived class가 있다고 치자. 각 class에는 work()라는 함수가 있다. 이 때 work()를 실행한다면, 학생.work()는 '공부'를 하고 배우.work()는 '연기'를 하고 가수.work()는 '노래'를 한다고 치자. 이렇게 같은 work()를 했는데 결과는 각각 다른 게 실행된다. 이런 걸 보고 polymophism이라고 한다. 이런 상황에서 전부 다 work()를 한 번씩 실행하려고 하면, 각각 data type이 다르기 때문에 한 배열에 집어넣을 수 ..