-
카테고리
-
세부 분야
프로그래밍 언어
-
해결 여부
미해결
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 함수를 다시 정의하는것이 더 재활용성 있고 편한건가요?
함수 하나 더 정의했으니 코드량이 늘어난 것 아닌가요?
답변을 작성해보세요.
1
1
0
답변 3