任何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
此函数只是将功传递给正常的octavepolyval作用多项式类重载函数的另一个有趣的例子是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-2025 Octave中文网
ICP备案/许可证号:黑ICP备2024030411号-2