Nạp chồng toán tử (operator overloading) trong c#, cú pháp
Tân oán tử là 1 trong những ký hiệu được áp dụng trong số biểu thức (Ví dụ: + – * / …). Ngôn ngữ xây dựng C++ cho phép fan thiết kế viên Overload toán thù tử cùng hàm để phục vụ riêng cho từng các loại dữ liệu tự tạo thành.
Bạn đang xem: Nạp chồng toán tử (operator overloading) trong c#, cú pháp
Nội dung bài viết
2. Các tân oán tử của c++3. Cú pháp Operator Overloading4. Chuyển phong cách dữ liệu6. Overloading tân oán tử nhập xuất cin cout (>> 7. các bài tập luyện áp dụng Operator Overloadingb. Code class PhanSo hoàn chỉnh sử dụng Operator Overloading1. Giới thiệu về Operator Overloading
Operator Overloading tốt Gọi là nạp chồng toán thù tử, được dùng để làm có mang toán tử mang đến gồm sẵn vào c++ ship hàng cho tài liệu riêng rẽ vì chưng các bạn tạo ra.
Giả sử gồm lớp PhanSo cùng có những hàm yếu tố nhỏng Set, Cong, Tru, Nhan, Chia.
khi bạn muốn tính biểu thức KQ = A+B cùng với hồ hết gì đang lí giải trong số bài viết trước thì bạn nên tiến hành nlỗi sau:
Ở bên trên là 1 trong biểu thức đơn giản, nếu như con số phnghiền tính những lên, bạn sẽ rất khó khăn để gọi những hàm và xử lí, dễ khiến rối cho người xây dựng với thiếu hụt trực quan.
Chính bởi vì vậy trong bài viết này bản thân sẽ chỉ dẫn chúng ta overloading tân oán tử để rất có thể cầm cố KQ.Set(A.Cong(B)); Bên bên trên thành KQ = A + B;
Việc thực hiện toán tử cũng đều có bản chất nlỗi Gọi hàm nhằm xử lí dữ liệu.
2. Các toán thù tử của c++
– C++ chỉ chất nhận được người dùng overloading lại các toán thù tử bao gồm sẵn vào c++
– Một toán tử rất có thể được quan niệm đến nhiều kiểu dữ liệu khác biệt.
Ví dụ:

Các loại tân oán tử – Overloading operator
a. Toán tử đơn
Toán thù tử đối kháng là tân oán tử một ngôi (unary operator), rất có thể được sử dụng làm toán thù tử trước (prefix operator) và tân oán tử sau (postfix operator). Ví dụ phxay tăng (++) tuyệt phép sút (–)
Ví dụ:
prefix operator: ++A;postfix operator: A++;b. Toán thù tử đôi
Toán tử đôi là toán tử gồm 2 ngôi (binary operator).
Ví dụ: như A+B, A*B, hay toán tử chỉ mục “<…>” cũng chính là tân oán tử song.
c. Các toán thù tử hoàn toàn có thể overload

Các một số loại toán thù được rất có thể cùng cấp thiết overload.
(aa,bb)
Trước hết các bạn cũng knhị báo như trên, tuy vậy hàm toàn thể nên các bạn đề xuất thiêt lập hàm các bạn để nó rất có thể truy vấn vào những trực thuộc tính
friover PhanSo operator+(PhanSo a, PhanSo b);
Sau đó viết source mang đến hàm này:
b. knhì báo số đối -A mang lại class phân số
ví dụ như bạn muốn áp dụng phép tân oán -a để lấy số đối của PhanSo thì chú ý vào bảng bên trên, -a có dạng
(aa)
Đầu tiên các bạn khai báo theo cú pháp frikết thúc PhanSo operator-(PhanSo A);
Sau đó viết văn bản mang đến hàm này sinh hoạt viên bộ
4. Chuyển giao diện dữ liệu
Xét ví dụ sau:
Để viết class PhanSo chất nhận được thực hiện những phép tính như:
A + B (Với A, B là một PhanSo);A + 5 (Với 5 là một số nguyên)3 + AÍt độc nhất chúng ta đề nghị knhị báo 3 dạng:
PhanSo operator+(PhanSo b); // Dành cho PhanSo + PhanSoPhanSo operator+(int b); // Dành mang đến PhanSo + Int
bb Tuy nhiên aa từ bây giờ là một vài nguyên, mà lại khai báo ngơi nghỉ phương thức của lớp thì aa đó là đối tương của lớp ( aa.operator
Tuy nhiên, ví như phnghiền tân oán 2 ngôi, gồm cả +, -, *, /, những phép tân oán so sánh thì từng một số loại chúng ta đề xuất knhị báo 3 lần, khôn xiết lếu loạn, dài với cạnh tranh kiểm soát điều hành, giải pháp viết phần đông hàm tương tự nhau điều đó rất dễ khiến cho chính mình sự căng thẳng và thiếu chính xác. Lúc bấy giờ việc vận dụng đưa phong cách dữ liệu trong Overload tân oán tử đang làm cho một phương án công dụng.
a. Chuyển phong cách bằng constructor
Theo dõi đoạn code bên dưới đây
class PhanSoprivate: long tu, mau;public: PhanSo (int t, int m) Set(t,m); PhanSo (int t) Set(t,1); void Set (long t, long m); frikết thúc PhanSo operator + (PhanSo a, PhanSo b); frikết thúc PhanSo operator - (PhanSo a, PhanSo b);//...;
Khi chúng ta viết PhanSo a=1 thì công tác đang Gọi constructor PhanSo (int t) Set(t,1); Để ngoài tạo đối tượng người sử dụng, một phần vày số một là số int buộc phải công tác chạy constructor đúng đối số này.
Và khi bạn viết PhanSo a = 1 + PhanSo(1,2) hôm nay chương trình vẫn phát âm PhanSo a = PhanSo(1) + PhanSo(1,2) cùng bài tân oán trsinh sống về PhanSo + PhanSo.
Đó là giải pháp xử lý vấn đề trên. Cách này khiến cho bạn tiết kiệm ngân sách được sức lực, cùng bớt được sai sót, tương tự như tổng thể các trường thích hợp rộng.
b. Chuyển phong cách bằng phxay tân oán chuyển kiểu
Nếu nhỏng đưa vẻ bên ngoài bằng constructor tự đẳng cấp đang xuất hiện sẵn nhằm phù hợp với dữ liệu của kiểu new, thì chuyển kiểu bởi phép tân oán gửi hình dạng có thể chấp nhận được gửi tự kiểu tài liệu bởi vì mình quan niệm thành các kiểu dáng bao gồm sẵn.
Tóm lại: ví dụ mình có PhanSo a=PhanSo(1,2) mình có thể lấy số thực của phân số này bằng cách float x = (float)a;