저는 C++ 14/17에서 소개 될 개념에 대해 몇 가지 독서를하고 있습니다. 자바 인터페이스로 개념적으로, 거의 같은이되지C++ 개념과 Java 인터페이스의 차이점은 무엇입니까?
// Define the concept (from wikipedia)
auto concept less_comparable<typename T> {
bool operator<(T);
}
// A class which implements the requirements of less_comparable,
// with T=`const string &`
class mystring
{
bool operator < (const mystring & str) {
// ...
}
};
// Now, a class that requires less_comparable
template <less_comparable T>
class my_sorted_vector
{
// ...
};
// And use my_sorted_vector
my_sorted_vector<int> v1; // should be fine
my_sorted_vector<mystring> v2; // same
my_sorted_vector<struct sockaddr> v3; // must give error?
내 질문은 : 내가 이해 무슨에서, 우리는 정의와 같은 개념을 사용합니까? 그렇지 않다면 어떻게 다른가요?
감사합니다.
당신은 개념과 상속이 절대적으로 서로 * * 전혀 * 상관 없다는 것을 알고 있습니까? 또한 Java 인터페이스는 약형이며 개념은 매우 강력하게 입력됩니다. – Puppy
@FredOverflow 개념을 사용하지 않으면 개념과 비슷한 효과를 얻을 수 있습니다. 템플릿 매개 변수가 코드에서의 사용과 호환되지 않으면 코드는 현재 컴파일되지 않습니다 (혼동되는 오류 메시지가 있음에도 불구하고). –
@DeadMG 예, 알고 있습니다. 내 의견을 삭제했습니다. 그것은 너무 호언 장담했다. 죄송합니다. –