我正在设计一个小数学库。我有一些代表功能类的类,例如多项式。当它们被实例化时,提供所需的参数(a1,a2,a3),以便对象实际上表示一个特定的多项式(a1 * x^2 + a2 * x + a3)。重载函数调用操作符和返回类型
然后我想提供在某个点(x = 3,y =?)评估函数的功能。我读过this wiki和Thinking in C++,Vol。 1由布鲁斯Eckel。他们都说我应该根据操作员的“含义”来决定是否超载。我不是一个有经验的C++程序员,但就我所知,如果我有一个代表功能的类,并且我使用obj(x)
,我期望的是该函数在该x
处的值为y
。
这个疑问出现在维度上:我也必须表示矢量函数(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),我很乐意改正它。
谢谢你的回答。关于指针,如果我用new创建返回对象并返回指向这个对象的指针,我该如何管理所有权?我读这个http://stackoverflow.com/questions/94227/smart-pointers-or-who-owns-you-baby和第一个选项(auto_ptr)似乎是合理的。你怎么看? –