Đa năng hoá toán tử

Một phần của tài liệu Bài giảng lập trình hướng đối tượng dùng c + +chương 2 giới thiệu ngôn ngữ c++ (Trang 47)

Một toán tử có thể dùng cho nhiều loại kiểu dữ liệu Các toán tử được chia thành hai loại

 Toán tử một ngôi: chỉ có một toán hạng  Toán tử hai ngôi: có hai toán hạng

Toán tử một ngôi lại chia thành hai loại  Tiền tố: toán tử đặt trước toán hạng  Hậu tố: toán tử đặt sau toán hạng

#48

#49

Đa năng hoá toán tử

Cú pháp:

type_name operator operator_symbol

( parameters_list ) {

………} }

Từ khóa operator khai báo một hàm chỉ rõ ý nghĩa của toán tử operator_symbol.

#50

Đa năng hoá toán tử

Số lượng tham số của hàm chính là số ngôi của toán tử

Các toán tử được đa năng hóa sẽ được lựa chọn bởi TBD cũng theo cách thức tương tự như việc chọn lựa giữa các hàm được đa năng hóa

#51

Đa năng hoá toán tử

struct Complex {

float r, i; };

………

Complex operator + (Complex c1, Complex c2) {

Complex tmp;

tmp.r = c1.r + c2.r; tmp.i = c1.i + c2.i; return tmp; } Complex c1, c2, c; ……… c = c1 + c2; c = operator + (c1, c2);

#52

Đa năng hoá toán tử

Không thể định nghĩa toán tử mới

 Phần lớn các toán tử được đa năng hóa  Ngoại trừ các toán tử

. .* :: ?: typeid sizeof const_cast

#53

Đa năng hoá toán tử

Không thể đa năng hóa ký hiệu tiền xử lý

Không thể thay đổi độ ưu tiên của toán tử hay số các toán hạng của nó

Không thể thay đổi ý nghĩa của toán tử khi áp dụng các kiểu cài sẵn

Trong hàm định nghĩa toán tử không có các tham số có giá trị mặc định

#54

Đa năng hoá toán tử

+ - * / % | & ^

~ >> << = += -= *= /=

%= |= &= ^= >>= <<= > <

>= <= == != && || ! ++

-- gọi hàm() [] new delete thành -> viên ->* thành viên con trỏ , & địa chỉ con trỏ* + dấu dương - dấu âm ( type_name ) type_name () Toán tử chuyển kiểu

#55

Template

Được sử dụng khi có những đoạn mã tương đồng về công việc nào đó

VD: hàm tìm giá trị lớn nhất của hai số nguyên

Hàm này chỉ sử dụng cho 2 số nguyên, đối với số thực  viết lại hàm có sự thay đổi về kiểu dữ liệu

int Max(int a, int b) {

return (a>b) ? a : b; }

#56

Template

Template để giải quyết vấn đề xử lý có tính chất tổng quát (genetic) với kiểu dữ liệu chưa xác định Dựa vào template có thể tạo các công việc cụ thể (thực thể) theo một cách nào đó

Gồm 2 loại

 Hàm template  Lớp template

#57

Một phần của tài liệu Bài giảng lập trình hướng đối tượng dùng c + +chương 2 giới thiệu ngôn ngữ c++ (Trang 47)

Tải bản đầy đủ (PPTX)

(62 trang)