Здравствуйте, Sinclair, Вы писали:
S>Ну, с интерфейсом это ещё не так явно проявляется. Более классический случай — наследуемся от класса, получаем в подарок набор статик мемберов, которые невозможно получить "нелюбопытным" наследованием:
В плюсах нет выделенной сущности "интерфейс", там все эти эффекты идут сразу же. ))
Да, примерно так и делают.
Только комбинаторика всевозможных ситуаций еще шире, т.к. плюсы позволяют наследоваться в т.ч. от параметра шаблона.
Ну и, плюсы позволяют объявлять, но не определять тип:
template<typename T>
class TaggedString
{
TaggedString<T> operator +(const string & other) { ... }
};
typedef TaggedString<struct Tag1> MyString1;
typedef TaggedString<struct Tag2> MyString2;
Tag1, Tag2 и т.д. более нигде не упоминаются и не описываются.