1. Trang chủ
  2. » Công Nghệ Thông Tin

CHƯƠNG 6 PHÉP TOÁN pptx

19 175 1
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 19
Dung lượng 622,87 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

C định nghĩa cho các kiểu cơ sở như int, float, …chưa định nghĩa cho Muốn sử dụng phép toán + cho kiểu phanso thì phải định nghĩa lại phép toán + ị g Tại sao?. ầ phần, { Phần bắt buộc

Trang 1

CHƯƠNG 6 PHÉP TOÁN

1

Trang 2

MỤC TIÊU

2

ngữ C++

{ Truy cập dữ liệu (nhập/xuất; nhận biết/thay đổi giá trị của dữ liệu)

{ Các phép toán liên quan

{ Các phép toán liên quan

{ Các hành vi đặc thù

Trang 3

NỘI DUNG CHI TIẾT

3

Trang 4

ĐẶT VẤN ĐỀ

4

Không báo lỗi

Vì phép toán + chỉ được

Báo lỗi Tại sao?

C định nghĩa cho các kiểu

cơ sở như int, float,

…chưa định nghĩa cho

Muốn sử dụng phép toán + cho kiểu phanso thì phải định nghĩa lại phép toán + ị g Tại sao?

kiểu phanso định nghĩa lại phép toán +

Trang 5

HÀM TOÁN TỬ

5

cách tiện lợi và tự nhiên

phần,

{ Phần bắt buộc - sử dụng từ khóa operator

{ Phần do người lập trình chọn lựa trong tập hợp các ký hiệu

{ Phần do người lập trình chọn lựa trong tập hợp các ký hiệu

phép toán của ngôn ngữ

Trang 6

VÍ DỤ

6

phanso operator+ (phanso a){

//

}

Kiểu trả về

Từ khóa bắt buộc phải có

Phép toán được định nghĩa lại là buộc phải có

phép +

Trang 7

Các ký hiệu khơng sử dụng

7

Phép toán Ý nghĩa

:: Truy cập đến thành phần của lớp

.* Truy cập đến con trỏ là thành phần đối tượng

hay struct

. Truy cập đến thành phần của đối tượng hay

của struct

?: Phép toán điều kiện

sizeof() Lấy kích thước của kiểu dữ liệu

Trang 8

Phép toán là thành viên của lớp

8

phần thuộc lớp

nếu không thì trình dịch không thể thực hiện được nó

số

số

Trang 9

PHÉP TOÁN 2 NGÔI

9

là 2 số nguyên

sau, cho u = (t,m), v = (t,m), thì w = (t,m),

w = u + v <=> w.t = u.t*v.m + v.t*u.m

w.m = u.m * v.m

Trang 10

Tương tự cho các phép toán 2 ngôi

khác

10

khác

Kết quả trả về operator phép toán (các tham số)

{

return ….;

}

b t í d t ê ó thể hiể là t (b)

}

c=a+b trong ví dụ trên có thể hiểu là c=a.operator+(b)

c.t=a.t*b.m+b.t*a.m

c m=a m*b m

c.t=t*b.m+b.t*m

c m=m*b m

Trang 11

LƯU Ý

y Trong lời gọi a.operator +(b), a đóng vai trò tham số

11

minh Số tham số tường minh cho hàm toán tử thành

phần luôn ít hơn số ngôi của phép toán là 1 vì có một

phần luôn ít hơn số ngôi của phép toán là 1 vì có một

tham số ngầm định là đối tượng gọi hàm toán tử.

y Chương trình dịch sẽ không thể hiểu được biểu thức 3+b g g 3

vì cách viết tương ứng 3.operator (b) không có ý nghĩa Để giải quyết tình trạng này ta dùng hàm friend để định

nghĩa hàm toán tử (bài tập tự nghiên cứu) Gợi ý: hàm

toán tử này sẽ là hàm tự do, và là friend của hàm phanso Lời gọi cho nó là 3+b tương tự operator+(3,b)

Trang 12

BÀI TẬP TẠI LỚP

12

tung độ Viết phép toán + cho 2 Diem

Trang 13

PHÉP GÁN

13

a.t=b.t

a m=b m

t=b.t m=b.m

a.m=b.m

return a;

m b.m return *this

Trang 14

PHÉP TOÁN << và >>

14

{ Để định nghĩa phép toán << theo nghĩa xuất ra dòng dữ liệu xuất cho kiểu dữ liệu đang định nghĩa, ta định nghĩa phép toán như hàm toàn cục với tham số thứ nhất tham chiếu đến đối tượng thuộc lớp

ostream, kết quả trả về là tham chiếu đến chính ostream đó Toán

hạng thứ hai thuộc lớp đang định nghĩa.

y Phép toán >>p

{ Để định nghĩa phép toán >> theo nghĩa nhập từ dòng dữ liệu nhập cho kiểu dữ liệu đang định nghĩa, ta định nghĩa phép toán >> như hàm toàn cục với tham số thứ nhất là tham chiếu đến một đối tượng ụ ộ ợ g thuộc lớp istream, kết quả trả về là tham chiếu đến chính istream đó Toán hạng thứ hai là tham chiếu đến đối tượng thuộc lớp đang định nghĩa.

Trang 15

class PhanSo

15

{

friend istream& operator >> (istream &is, PhanSo &p);

friend ostream& operator << (ostream &os, PhanSo p); p ( , p);

};

Trang 16

istream & operator >> (istream &is, PhanSo &p)

{

16

{

is >> p.t >> p.m;

while (!p.m)

{{

cout << “Nhap lai mau so: ”;

is >> p.m;

{

return is;

}

ostream & operator << (ostream &os, PhanSo p)

{

{ PhanSo a, b;

cout << “Nhap phan so a: ”; cin >> a; cout << “Nhap phan so b: ”; cin >> b;

{

os << p.t;

if (p.t != 0 && p.m!= 1)

os << "/" << p.m;

cout << a<<endl;

cout<<b<<endl;

}

p ;

return os;

Trang 17

BÀI TẬP TỰ HỌC

17

toán trên, ví dụ class ma trận

Trang 18

TÓM TẮT

18

nghĩa lại

friend của lớp

trái luôn là đối tượng thuộc lớp

đối tượng của lớp khác

đối tượng của lớp khác

Trang 19

THANH YOU

Ngày đăng: 27/07/2014, 13:21

TỪ KHÓA LIÊN QUAN

w