Làm thế nào để thực hiện nạp chồng toán tử trong c ++?



Trong bài này chúng ta sẽ xem xét một khái niệm hướng đối tượng khác giúp cho việc xử lý toán tử dễ dàng. Chúng ta sẽ học tính năng Nạp chồng toán tử trong C ++.

Trong bài viết này, chúng ta sẽ khám phá một khái niệm hướng đối tượng khác giúp xử lý toán tử dễ dàng. Đó là chúng tôi sẽ đi vào chi tiết của Nhà điều hành Quá tải trong C ++ . Các gợi ý sau sẽ được đề cập trong bài viết này,

Vì vậy, chúng ta hãy bắt đầu với bài viết này về Nạp chồng toán tử trong C ++.





Quá tải trong C ++

Nếu chúng ta tạo hai hoặc nhiều thành viên của cùng một lớp có cùng tên nhưng khác nhau về số lượng hoặc kiểu tham số, nó được gọi là quá tải C ++.



sự khác biệt giữa ghi đè và ghi đè trong c ++

Trong C ++, chúng ta có thể nạp chồng:

  • phương pháp
  • người xây dựng
  • các thuộc tính được lập chỉ mục

Đó là bởi vì các thành viên này chỉ có tham số.

Tiếp tục với bài viết này về Nạp chồng toán tử trong C ++.



Các kiểu nạp chồng trong C ++

  • Quá tải chức năng
  • Người vận hành quá tải

Quá tải - Nạp chồng toán tử trong C ++ - Edureka

Tiếp tục với bài viết này về Nạp chồng toán tử trong C ++.

Tại sao sử dụng toán tử quá tải?

Các chương trình C ++ có thể được viết mà không cần kiến ​​thức về nạp chồng toán tử. Sau đó, toán tử hoạt động được các lập trình viên sử dụng sâu sắc để làm cho chương trình trở nên trực quan. Ví dụ,

Chúng tôi có thể thay thế mã như:

tính toán = cộng (chia (a, b), nhân (a, b))

Đối với phương trình

phép tính = (a / b) + (a * b)

Nạp chồng toán tử cung cấp một cách đơn giản và dễ dàng để phát triển các định nghĩa mới cho hầu hết các toán tử trong C ++. Với kiến ​​thức đầy đủ, chúng ta gần như có thể tạo ra một ngôn ngữ mới của riêng mình bằng cách sử dụng sáng tạo các kỹ thuật nạp chồng hàm và toán tử. Chúng ta có thể nạp chồng tất cả các toán tử trong C ++ ngoại trừ những điều sau:
● Toán tử phạm vi (: :)
● Toán tử kích thước (Sizeof)
● bộ chọn thành viên (.)
● bộ chọn con trỏ thành viên (*)
● toán tử bậc ba (? :)

Cú pháp nạp chồng toán tử

return_type class_name:: operator op (object_list) {// function body}

Trong đó kiểu trả về là kiểu giá trị được trả về bởi hàm. class_name là tên của lớp.

Tiếp tục với bài viết này về Nạp chồng toán tử trong C ++.

Thực hiện Nạp chồng toán tử trong C ++

Hàm toán tử phải là không tĩnh (hàm thành viên) hoặc hàm bạn bè để bị quá tải. Hàm nạp chồng toán tử có thể được áp dụng trên một hàm thành viên nếu toán hạng bên trái là một đối tượng của lớp đó, nhưng nếu toán hạng bên trái khác thì hàm nạp chồng toán tử phải được định nghĩa là một hàm không phải thành viên.
Chức năng nạp chồng toán tử có thể trở thành chức năng kết bạn nếu nó yêu cầu quyền truy cập vào các thành viên riêng tư và được bảo vệ của lớp. Ví dụ, toán tử op là một hàm toán tử trong đó op là toán tử đang được nạp chồng và toán tử là từ khóa. Quá tải toán tử có thể đạt được bằng cách triển khai một chức năng có thể là chức năng thành viên, chức năng không phải thành viên hoặc chức năng bạn bè.

Sự khác biệt giữa các hàm toán tử và các hàm bình thường là gì?

Các hàm toán tử giống như các hàm thông thường. Sự khác biệt duy nhất là, tên của một hàm toán tử luôn là từ khóa toán tử theo sau là ký hiệu của toán tử và các hàm toán tử được gọi khi toán tử tương ứng được sử dụng.

Tiếp tục với bài viết này về Nạp chồng toán tử trong C ++.

Các loại phương pháp tiếp cận quá tải

Người vận hành Quá tải có thể được thực hiện bằng cách sử dụng ba cách tiếp cận, chúng

  • Quá tải toán tử một ngôi.
  • Nạp chồng toán tử nhị phân.
  • Nạp chồng toán tử nhị phân bằng cách sử dụng hàm bạn bè.

Tiếp tục với bài viết này về Nạp chồng toán tử trong C ++.

Quá tải nhà điều hành đơn vị

Chúng ta hãy xem xét toán tử một ngôi ‘-‘. Một toán tử trừ khi được sử dụng dưới dạng một ngôi, nó chỉ yêu cầu một toán hạng. Chúng ta biết rằng toán tử này thay đổi dấu của một toán hạng khi áp dụng cho một biến dữ liệu cơ bản. Chúng ta hãy xem cách nạp chồng toán tử này để nó có thể được áp dụng cho một đối tượng giống như cách nó được áp dụng cho một biến int hoặc float. Dấu trừ một bậc, khi được áp dụng cho một đối tượng, sẽ giảm từng mục dữ liệu của nó.

Thí dụ:

#include using namespace std class Height {public: // Member Objects int feet, inch // Constructor để khởi tạo giá trị của đối tượng Height (int f, int i) {feet = f inch = i} // Nạp chồng (-) toán tử thành thực hiện giảm // hoạt động của đối tượng Chiều cao void operator- () {feet-- inch-- cout<< 'Feet & Inches after decrement: ' << feet << ' ' ' << inch <

Đầu ra:

Giải trình:
Trong ví dụ trên, chúng ta nạp chồng toán tử một ngôi ‘-’ để thực hiện giảm hai biến của lớp Chiều cao. Chúng tôi truyền hai tham số cho hàm tạo và lưu các giá trị của chúng theo biến feet và biến inch. Sau đó, chúng tôi xác định hàm nạp chồng toán tử (void operator- ()
) trong đó hai biến số giảm đi một vị trí.
Khi chúng ta viết -h1, nó gọi hàm nạp chồng toán tử và giảm các giá trị được truyền cho hàm tạo.

Tiếp tục với bài viết này về Nạp chồng toán tử trong C ++.

Quá tải toán tử nhị phân

Nó là sự nạp chồng của một toán tử hoạt động trên hai toán hạng. Hãy lấy cùng một ví dụ về lớp Chiều cao, nhưng lần này, thêm hai đối tượng Chiều cao h1 và h2.

Thí dụ:

#include using namespace std class Height {public: int feet, inch Height () {feet = 0 inch = 0} Height (int f, int i) {feet = f inch = i} // Nạp chồng (+) toán tử để thực hiện phép cộng // đối tượng hai khoảng cách sử dụng toán tử nhị phân Toán tử chiều cao + (Chiều cao & d2) // Gọi bằng tham chiếu {// Tạo đối tượng trả về Chiều cao h3 // Thực hiện phép cộng feet và inch h3.feet = feet + d2.feet h3. inch = inch + d2.inch // Trả về đối tượng kết quả trả về h3}} int main () {Chiều cao h1 (3, 7) Chiều cao h2 (6, 1) Chiều cao h3 // Sử dụng toán tử nạp chồng h3 = h1 + h2 cout<< 'Sum of Feet & Inches: ' << h3.feet << ''' << h3.inch << endl return 0 } 

Đầu ra:

Giải trình:
Toán tử chiều cao + (Chiều cao & h2), ở đây trả về_type của hàm là lớp Chiều cao do đó nó trả về một đối tượng h3 của lớp Chiều cao. Trong dòng h3 = h1 + h2, h1 gọi hàm toán tử của các đối tượng lớp của nó và lấy h2 làm tham số, sau đó chúng ta áp dụng h3.feet = feet + d2.feet và h3.inch = inch + d2.inch để lưu trữ tổng giá trị của các biến feet và inch trong các biến được liên kết với đối tượng h3.
Khi câu lệnh ‘h3 = h1 + h2’ gọi hàm được nạp chồng toán tử, đối tượng h1 đã chịu trách nhiệm gọi hàm và h2 đóng vai trò đối số được truyền cho hàm. Câu lệnh gọi trên tương đương với h3 = h1.operator + (h2) do đó thành viên dữ liệu của h2 được truy cập trực tiếp và thành viên dữ liệu của h2 (được truyền dưới dạng đối số) được truy cập bằng toán tử dấu chấm.

Quy tắc cho quá tải nhà điều hành

  • Chỉ các toán tử hiện tại mới có thể được quá tải và các toán tử mới không thể bị quá tải
  • Toán tử được nạp chồng phải chứa ít nhất một toán hạng của kiểu dữ liệu do người dùng xác định.
  • Chúng tôi không sử dụng một hàm kết bạn để làm quá tải các toán tử nhất định. Tuy nhiên, các hàm thành viên có thể được sử dụng để nạp chồng các toán tử đó.
  • Khi các toán tử một ngôi được nạp chồng thông qua một hàm thành viên, chúng không nhận đối số rõ ràng, nhưng nếu chúng bị nạp chồng bởi một hàm bạn bè, chúng sẽ nhận một đối số.
  • Khi các toán tử nhị phân được nạp chồng thông qua một hàm thành viên, chúng nhận một đối số rõ ràng và nếu chúng được nạp chồng thông qua một hàm bạn bè, chúng sẽ nhận hai đối số rõ ràng.

Như vậy chúng ta đã kết thúc bài viết này về 'Nạp chồng toán tử trong C ++'. Nếu bạn muốn tìm hiểu thêm, hãy xem Đào tạo Java của Edureka, một công ty học trực tuyến đáng tin cậy. Edureka's khóa học được thiết kế để đào tạo bạn về cả khái niệm Java cốt lõi và nâng cao cùng với các khung Java khác nhau như Hibernate & Spring.

Có một câu hỏi cho chúng tôi? Vui lòng đề cập đến nó trong phần nhận xét của blog này và chúng tôi sẽ liên hệ lại với bạn trong thời gian sớm nhất.