2009-10-19 37 views
15

Tôi tự hỏi có thể xảy ra tình trạng quá tải của nhà điều hành nào (và với phiên bản nào của Delphi)? Nhờ Hallvard's great write-up on operator overloading, tôi biết:Delphi hỗ trợ các loại quá tải nào?

  • Add (Left, Right: Type): Loại (đối với tử '+')
  • Subtract (Left, Right: Type): Loại (cho ' -' nhà điều hành)
  • Multiply (Left, Right: Type): Loại (đối với '*' điều hành)
  • Divide (Left, Right: Type): Loại (đối với '' điều hành /)
  • Implicit (aValue: Loại): Loại Khác và
  • Ngụ ý (aValue: Loại Khác): Nhập (cho nhiệm vụ ngầm: a: ​​= b)
  • Explicit (Avalue: Type): AnotherType và
  • Explicit (Avalue: AnotherType): Loại (ví assignmetns rõ ràng của 'phôi': a: = Loại (b)

Tuy nhiên, những gì tôi không biết là tên của các toán tử '=', '< =', '<', '<>', '>' và '> ='. Làm những điều này tồn tại, và từ phiên bản Delphi nào tôi có thể sử dụng chúng?

PS: Tôi vẫn sử dụng Delphi 2009 vào lúc này, vì vậy tôi sẽ có một nâng cấp đối số mạnh mẽ nếu 2010 cung cấp những ;-)

Trả lời

16

Trên thực tế, tôi thấy câu trả lời cho bản thân mình, nhưng vẫn giữ những câu hỏi như Tôi có thể tưởng tượng mọi người sẽ tìm kiếm thông tin này thường xuyên trên stackoverflow;

Mô tả chính thức về overloaders nhà điều hành có thể được tìm thấy ở đây: http://docwiki.embarcadero.com/RADStudio/en/Operator_Overloading_(Delphi)

Chủ yếu, những cái tôi đang tìm kiếm là tên:

  • bình đẳng, cho '=' so sánh: Bình Đẳng (a: loại ; b: type): Boolean;
  • NotEqual, cho '<>' so sánh: NotEqual (a: type; b: type): Boolean;
  • GreaterThan, để so sánh '>': GreaterThan (a: type; b: type) Boolean;
  • GreaterThanOrEqual, cho '> =' so sánh: GreaterThanOrEqual (a: type; b: type): resultType;
  • LessThan, để so sánh '<': Ít hơn (a: type; b: type): resultType;
  • LessThanOrEqual, cho '< =' so sánh: LessThanOrEqual (a: type; b: type): resultType;
+0

Trang đã di chuyển [ở đây] (http://docwiki.embarcadero.com/RADStudio/en/Operator_Overloading_ (Delphi)) – pritaeas

+0

@pritaeas: Cảm ơn, tôi được cập nhật liên kết. – PatrickvL

9

Tôi chỉ đặt notes online phiên của mình trên các loại có thể vô hiệu với quá tải toán tử mà tôi đã đưa ra trong một vài hội nghị.

Bây giờ, bảng này chứa một bảng các toán tử, tên và cách hoạt động/không hoạt động. WordPress ban đầu không đúng định dạng bảng đó, nhưng tôi đã khôi phục được nó.

Bạn cũng có thể tải xuống full set of slides and source code demos.

Nói tóm lại:

  • Các tài liệu (ngay cả những DocWiki) là chưa hoàn chỉnh, và lưu ý đáng tin cậy
  • Bạn không thể quá tải Bitwise không điều hành, như BitwiseNot không được hỗ trợ bởi trình biên dịch. Bạn phải quá tải toán tử logic chứ không phải.
  • nhà khai thác quá tải cặp khi áp dụng
  • Hãy nhận biết của các nhà khai thác hiện
  • Hãy rất cẩn thận khi thực hiện khai thác ngầm

Hy vọng điều này sẽ giúp bạn. Hãy cho tôi biết nếu bạn cần thêm thông tin: Tôi đã thực hiện khá nhiều công việc sản xuất với quá tải nhà điều hành.

--jeroen

+0

Cảm ơn - bây giờ bạn đã đề cập đến nó, tôi đã xem các trang trình bày của bạn trước đây. Tất cả trong một tổng quan tốt. Thật đáng tiếc là cộng đồng Delphi phải ghi lại điều này; Tôi đã có thể mong đợi một mảnh tài liệu kỹ lưỡng hơn từ CodeGear/Embarcadero. – PatrickvL

+0

Tôi cần phải tìm thời gian để tải nội dung của mình lên mạng đầu tiên, sau đó cập nhật quyền của Wiki. –

+0

Một bitwise không phải là 'AnInteger XOR -1' – Johan

Các vấn đề liên quan