菜菜鸟请教高手问题?(0分)

  • 主题发起人 主题发起人 lhxs
  • 开始时间 开始时间
L

lhxs

Unregistered / Unconfirmed
GUEST, unregistred user!
unit SortThds;
interface
uses
Classes, Graphics, ExtCtrls;
type
{ TSortThread }
PSortArray = ^TSortArray;
TSortArray = array[0..MaxInt div SizeOf(Integer) - 1] of Integer;
TSortThread = class(TThread)
private
FBox: TPaintBox;
FSortArray: PSortArray;
FSize: Integer;
FA, FB, FI, FJ: Integer;
proceduredo
VisualSwap;
protected
procedure Execute;
override;
procedure VisualSwap(A, B, I, J: Integer);
procedure Sort(var A: array of Integer);
virtual;
abstract;
public
constructor Create(Box: TPaintBox;
var SortArray: array of Integer);
end;

{ TBubbleSort }
TBubbleSort = class(TSortThread)
protected
procedure Sort(var A: array of Integer);
override;
end;

{ TSelectionSort }
TSelectionSort = class(TSortThread)
protected
procedure Sort(var A: array of Integer);
override;
end;

{ TQuickSort }
TQuickSort = class(TSortThread)
protected
procedure Sort(var A: array of Integer);
override;
end;
上面的 procedure Sort(var A: array of Integer);
virtual;
abstract;这个虚拟函数与 TQuickSort = class(TSortThread)
protected
procedure Sort(var A: array of Integer);
override;
end;
有什么区别,为什么要这样做?
 
各位高手,小弟在线等哈。
 
virtual,你也知道是虚拟函数,就是只有定义二没有实例(代码)的函数。它要求它的子类必须覆盖它,即写出实例(代码)。
override,就是指出本函数是重载/覆盖了父类的函数。
 
谢谢wang_80919!
 
后退
顶部