任何 Octave 函数都可以被重载,这允许根据需要调用函数特定于对象的版本。多项式类的一个贴切示例是重载 polyval 函数。
function [y, dy] = polyval (p, varargin)
if (nargout > 1)
[y, dy] = polyval (fliplr (p.poly), varargin{:});
else
y = polyval (fliplr (p.poly), varargin{:});
endif
endfunction
此函数只是将工作交给普通的 Octave polyval 函数。多项式类重载函数的另一个有趣的例子是 plot 函数。
function h = plot (p, varargin)
n = 128;
rmax = max (abs (roots (p.poly)));
x = [0 : (n - 1)] / (n - 1) * 2.2 * rmax - 1.1 * rmax;
if (nargout > 0)
h = plot (x, polyval (p, x), varargin{:});
else
plot (x, polyval (p, x), varargin{:});
endif
endfunction
这允许多项式在其根的附近区域中被绘制。
对重载特别感兴趣的函数是类转换函数,例如 double。重载这些函数允许 cast 函数与用户类一起工作。它还有助于将类对象与其他类的方法和函数一起使用,因为对象可以转换为新函数所需的输入形式。对于多项式类,一个 double 函数的示例如下所示
function a = double (p) a = p.poly; endfunction
版权所有 © 2024-2026 Octave中文网
ICP备案/许可证号:黑ICP备2024030411号-4