• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

12.7 인터페이스 클래스에 관한 질문 있습니다.

20.08.18 10:51 작성 조회수 137

0

인터페이스 클래스에서 마지막 부분이 이해가 잘 가지 않습니다.

#include<iostream>

#include<string>

using namespace std;

class IErrorLog

{

public:

virtual bool reportError(const char* errorMessage) = 0;

virtual ~IErrorLog() {};

};

class FileErrorLog : public IErrorLog

{

public:

bool reportError(const char* errorMessage) override

{

cout << "Writing error to a file" << endl;

return true;

}

};

class ConsoleErrorLog : public IErrorLog

{

public:

bool reportError(const char* errorMessage) override

{

cout << "Priting error to a console" << endl;

return true;

}

};

void doSomething(IErrorLog& log)

{

log.reportError("Runtime error!!");

}

int main()

{

FileErrorLog file_log;

ConsoleErrorLog console_log;

file_log.reportError("ㅇㅇㄹ");

console_log.reportError("dfdf");

doSomething(file_log);

doSomething(console_log);

return 0;

}

file_log.reportError("ㅇㅇㄹ");

console_log.reportError("dfdf");

doSomething(file_log);

doSomething(console_log);

은 같은 기능을 할 수 있지 않습니까?

왜 doSomething 함수를 다시 정의하는것이 더 재활용성 있고 편한건가요?

함수 하나 더 정의했으니 코드량이 늘어난 것 아닌가요?

답변 3

·

답변을 작성해보세요.

1

답변 감사합니다

1

Hello Yeo님의 프로필

Hello Yeo

2020.08.19

안녕하세요?
생각하신 것처럼 같은 기능을 할 수 있습니다. 유용한 부분은 12.1 강의에서 소개하는 부분과 맥락이 크게 다르지 않습니다.

0

그 유용함이 와 닿지 않습니다. 혹시 예시 같은 것을 알 수 있을까요?