Я разрабатываю небольшую математическую библиотеку. У меня есть классы, которые представляют классы функций, например. многочлен. Когда они создаются, требуются параметры (a1, a2, a3), поэтому объект фактически представляет собой конкретный многочлен (a1 * x^2 + a2 * x + a3).Оператор вызова функции перегрузки и тип возврата
Затем я хочу предоставить функциональные возможности оценки функции в определенной точке (x = 3, y =?). Я читал this wiki и главу 12 мышления в C++, том. 1 от Брюса Эккеля. Оба они говорят, что я должен решить, следует ли перегружать или не основываться на «значении» оператора. Я не опытный программист на C++, но, насколько мне известно, если у меня есть класс, представляющий функцию, и я использую obj(x)
, то, что я ожидаю, это значение y
, которое выполняет функция x
.
Сомнения возникают с размерами: я должен также представлять векторные функции (http://en.wikipedia.org/wiki/Vector_function), например a1 * x1 + a2 * x2, и у меня будет такая подпись: operator()(real x1, real x2)
. Моя проблема связана с типом возврата. Если y1 = a1 * x1 + a2 * x2 - вектор (как математически, так и в C++), следует ли возвращать y1 по значению или по ссылке? И должен ли я предоставить также версию const
?
PS Это мой первый вопрос здесь, на Stackoverflow.com, поэтому, пожалуйста, скажите мне, если что-то не так (название, теги, сам вопрос: P), и я с радостью исправлю это.
благодарим вас за ответ. О указателях, если я создаю возвращаемый объект с новым и вернул указатель на этот объект, как мне управлять правом собственности? Я прочитал этот http://stackoverflow.com/questions/94227/smart-pointers-or-who-owns-you-baby, и первый вариант (auto_ptr) кажется разумным. Что ты думаешь о? –