я уже написал что максимально критичны. программа будет вести себя неопределенным образом. скорее всего падать. оператор * должен возвращать объект а не ссылку на него. а вот оператор *= - уже ссылку. обычно один реализуется за счет другого. причем operator * делается как вравило в виде свободной функции.
вообще походче что NumericArray сделан только ради добавления оператора *. Но его можно сделать в виде свободной шаблонной функции для всего семейства классов Array<T>. Если для объектов типа T операция умножения на double корректна, то код будет компилироватся для массива объектов таких типов, если же такой операции нет - то просто не скомпилится попытка использовать такой оператор. если оператор для таких объектов не использовать, то все по прежнему будет компилиться.
1
|