#include<string>
#include<iostream>
class DnsResolve
{
public:
DnsResolve(const std::string & dns)
{
m_dns = dns;
}
std::string operator()()
{
auto index = m_dns.find('.');
if (index == std::string::npos)
{
return "더 이상 해석할 서브 도메인이 없습니다.";
}
std::string msg("찾은 서브 도메인: ");
for (int i = 0; i < index; i++)
{
msg.push_back(m_dns[i]);
}
m_dns.erase(0, index + 1);
return msg;
}
private:
std::string m_dns;
};
int main()
{
auto dn = DnsResolve("gall.dcinside.com");
std::cout << dn() << std::endl;
std::cout << dn() << std::endl;
std::cout << dn() << std::endl;
std::cout << dn() << std::endl;
std::cout << dn() << std::endl;
std::cout << dn() << std::endl;
return 0;
}
간단하게 클래스씁시다.
궁금한게 있습니다. 클로저라는게 함수포인터에 가깝나요? 생성자 클래스에 가깝나요?
클로저는 함수포인터 + 닫힌공간이라고 생각하면 되는데...생성자 클래스라는건 뭐냐
ㄴ이글 작성자 처럼 멤버 변수를 가지고 있는 클래스 생성자로 풀까는 저도 생각을 했었거든요. 근데 클로저는 분명 함수만 리턴해서요.
ㅇㅇ 분명 함수만 리턴하는데 그 리턴하는 함수가 닫힌 공간을 가리키고 있으면 클로저라고
예제에서는 dns라는 변수가 존재하는 닫힌공간이겠지
ㄴ아! 그렇군요. 쉽게 말씀해주시니 이해가 되네요. 감사합니다.