Может ли шаблонный класс иметь чисто виртуальные функции и виртуальные операторы? - PullRequest
1 голос
/ 01 октября 2019

Мой профессор был очень непреклонен в том, что интерфейсные классы не могут быть шаблонизированы. В частности, классы с чисто виртуальными функциями не могут иметь шаблонных параметров. Более того, он сказал, что вы не можете создавать виртуальные операторы.

Это был пример, который он демонстрировал нам в то время.

template <typename T>
class Array {
public:
  virtual void fill(T t) = 0;
  virtual T& operator[](size_t i) const = 0;
  // ... 
};

Нет ничего плохого в этом коде, верно? Был ли когда-нибудь в истории C ++ момент, когда это не скомпилировалось бы? Я использовал эту точную форму кода в назначении, и она отлично работает.

1 Ответ

2 голосов
/ 01 октября 2019

Может ли шаблонный класс иметь чисто виртуальные функции и виртуальные операторы?

Да.

Нет ничего плохого в этом коде, верно?

Точно.

Был ли когда-нибудь в истории C ++ момент, когда это не скомпилируется?

Возможно. Я не смог бы точно сказать, что он будет компилироваться с оригинальным транспортом Cfront.

Однако он хорошо сформирован в любой стандартной версии C ++.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...