Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 56 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
56
Dung lượng
0,91 MB
Nội dung
Chương 05 Chồng hàm chồng toán tử (function overloading and operator overloading) I Chồng hàm II Chồng toán tử III Các loại biến Ngô Công Thắng - Bài giảng LTHĐT - Chương 05 I Chồng hàm (function overloading) Sự cần thiết phải chồng hàm Trình biên dịch hàm chồng Ngô Công Thắng - Bài giảng LTHĐT - Chương 05 Sự cần thiết phải chồng hàm Bài tập 1: Viết hàm tính trung bình cộng mảng int, long, float double Với tập này, bình thường ta phải viết hàm để tính trung bình cho mảng khác gọi hàm ta phải nhớ tên hàm Tuy nhiên, C++ cho phép nhiều hàm có tên giống cần khác đối số Việc sử dụng tên cho nhiều hàm gọi chồng hàm Chồng hàm giúp người sử dụng nhớ nhiều tên hàm khác Ngô Công Thắng - Bài giảng LTHĐT - Chương 05 Trình biên dịch hàm chồng Làm mà trình biên dịch phân biệt hàm có tên? Trình biên dịch tạo tên cho hàm cách kết hợp tên hàm với tên kiểu đối số Ví dụ: tbc_int_int(), tbc_long_int() Bài tập nhà: Viết chương trình tính bình phương số int, long, float, double Làm để lấy địa hàm chồng? Ngô Công Thắng - Bài giảng LTHĐT - Chương 05 II Chồng toán tử 2.1 Tại phải chồng toán tử? 2.2 Chồng tốn tử hai ngơi 2.3 Chồng tốn tử 2.4 Chuyển đổi đối tượng kiểu liệu 2.5 Chuyển đổi lớp 2.6 Chồng toán tử gán = toán tử [ ] 2.7 Chồng toán tử nhập/xuất - Hàm bạn (friend function) Ngô Công Thắng - Bài giảng LTHĐT - Chương 05 I Tại phải chồng toán tử? Chồng tốn tử sử dụng tốn tử có sẵn để tác động toán hạng khác nhau, tức ta định nghĩa tác động toán tử đối tượng lớp Chồng toán tử giúp chương trình dễ viết, dễ đọc dễ hiểu Ví dụ: giả sử ta muốn cộng hai đối tượng lớp airtime gán kết nhận vào đối tượng airtime khác Khi đó, ta viết at3=at1+at2 dễ hiểu viết at3=at1.add(at2) hay at3.add(at1,at2) Ngô Công Thắng - Bài giảng LTHĐT - Chương 05 Chương 14 Chồng toán tử I Tại phải chồng tốn tử? II Chồng tốn tử hai ngơi III Chồng tốn tử ngơi IV Chuyển đổi đối tượng kiểu liệu V Chuyển đổi lớp VI Chồng toán tử gán = tốn tử [ ] Ngơ Cơng Thắng - Bài giảng LTHĐT - Chương 05 Chương 14 Chồng tốn tử II Chồng tốn tử hai ngơi II.1 Chồng toán tử số học II.2 Chồng toán tử quan hệ II.3 Chồng toán tử gán phức hợp Ngô Công Thắng - Bài giảng LTHĐT - Chương 05 II.1 Chồng toán tử số học Ví dụ 1: Viết chương trình cộng hai số phức nhập vào từ bàn phím tốn tử cộng + Bài nhà 1: Xây dựng lớp đối tượng xâu ký tự để dùng phép cộng ghép nhiều xâu ký tự thông thường thành xâu Ngô Công Thắng - Bài giảng LTHĐT - Chương 05 II.1 Chồng tốn tử số học Các tốn tử chồng +, -, *, / Để chồng toán tử ta phải định nghĩa hàm xác định phép tốn mà tốn tử thực Hàm chồng tốn tử giống hàm bình thường, khác tên hàm từ khóa operator kết hợp với tốn tử: operatorX, X tốn tử Ví dụ để chồng tốn tử + ta có tên hàm operator+ Lời gọi hàm chồng tốn tử dùng cú pháp giống hàm bình thường Ví dụ: t3 = t1.operator+(t2); Nhưng từ khóa operator, dấu chấm cặp dấu ngoặc () không cần thiết Bởi ta viết: t3 = t1 + t2; Ngô Công Thắng - Bài giảng LTHĐT - Chương 05 10 Sự khác khai báo định nghĩa Một khai báo (declaration) xác định tên kiểu liệu Nhiệm vụ khai báo cung cấp thông tin cho trình biên dịch, khơng u cầu trình biên dịch làm việc Trái lại, định nghĩa (definition) yêu cầu trình biên dịch phải cấp phát nhớ cho biến Trong số trường hợp khai báo yêu cầu trình biên dịch cấp phát nhớ, chẳng hạn khai báo biến Tuy nhiên, với định nghĩa trường hợp yêu cầu cấp phát nhớ Ngô Công Thắng - Bài giảng LTHĐT - Chương 05 42 Thời gian tồn phạm vi hoạt động loại biến Các loại biến có hai đặc tính phạm vi hoạt động thời gian tồn Phạm vi hoạt động liên quan đến phần chương trình truy nhập (sử dụng) biến Thời gian tồn khoảng thời gian biến tồn Phạm vi hoạt động biến lớp, hàm, file hay số file Thời gian tồn biến trùng với đối tượng, hàm hay tồn chương trình Có loại biến sau: biến tự động, biến ghi, biến khối lệnh, biến ngồi, biến tĩnh đối tượng Ngơ Cơng Thắng - Bài giảng LTHĐT - Chương 05 43 a) Các biến tự động (automatic variable) Các biến tự động biến khai báo hàm Sở dĩ gọi chúng biến tự động chúng tự động tạo hàm gọi bị hủy hàm kết thúc Biến tự động có phạm vi hoạt động hàm Do đó, biến i khai báo hàm hoàn toàn khác với biến i khai báo hàm khác Mặc định biến tự động không khởi tạo, sau chúng hình thành chúng có giá trị vô nghĩa Ngô Công Thắng - Bài giảng LTHĐT - Chương 05 44 b) Các biến ghi (register variable) Biến ghi loại biến tự động đặc biệt Nó đặt ghi CPU nhớ Việc truy nhập biến ghi nhanh biến thông thường Biến ghi có lợi dùng làm biến điều khiển cho lệnh lặp bên trong lệnh lặp lồng Ta nên dùng đến hai biến ghi hàm Để khai báo biến ghi ta dùng từ khóa register trước khai báo biến thơng thường Ví dụ: register int a; Ngô Công Thắng - Bài giảng LTHĐT - Chương 05 45 c) Các biến khối lệnh Các biến tự động khai báo đâu hàm khối lệnh Khối lệnh phần chương trình nằm hai dấu ngoặc { }, chẳng hạn thân lệnh if hay thân lệnh lặp Các biến khai báo khối lệnh có phạm vi hoạt động khối lệnh Ngơ Cơng Thắng - Bài giảng LTHĐT - Chương 05 46 d) Các biến (external variable) Các biến biến khai báo bên tất hàm lớp Các biến ngồi có phạm vi hoạt động từ vị trí khai báo đến cuối file khai báo chúng Thời gian tồn biến thời gian tồn chương trình, tức chương trình kết thúc biến ngồi bị hủy Khác với biến tự động, biến tự động khởi tạo ta không khởi tạo Ngô Công Thắng - Bài giảng LTHĐT - Chương 05 47 d) Các biến (tiếp) //Bat dau file int a; //a la bien ngoai class aclass { }; void afunc(); //Cuoi file Ngô Công Thắng - Bài giảng LTHĐT - Chương 05 48 d) Các biến ngồi (tiếp) Nếu chương trình chia thành nhiều file biến ngồi dùng file khai báo chúng, không dùng file khác Để file khác sử dụng biến định nghĩa file ta phải khai báo biến dùng từ khóa extern Để biến truy nhập file khai báo chúng, không truy nhập từ file khác ta dùng từ khóa static Trong ngữ cảnh này, từ khóa static có nghĩa hạn chế phạm vi hoạt động biến Ví dụ: (trang sau) Ngơ Cơng Thắng - Bài giảng LTHĐT - Chương 05 49 d) Các biến ngồi (tiếp) Ví dụ 1: Truy nhập biến nhiều file //Bat dau file int a; //a la bien ngoai //Cuoi file //Bat dau file extern int a; //khai bao su dung bien ngoai a o file //Trong file co the truy nhap bien a //Cuoi file //Bat dau file //Khong khai bao su dung bien ngoai a nen file // khong the truy nhap bien a //Cuoi file Ngô Công Thắng - Bài giảng LTHĐT - Chương 05 50 d) Các biến ngồi (tiếp) Ví dụ 2: Hạn chế việc truy nhập biến //Bat dau file static int a; //dinh nghia bien ngoai a //bien a chi truy nhap duoc file //Cuoi file //Bat dau file extern int a; //Khong dung duoc khai bao //Cuoi file Ngô Công Thắng - Bài giảng LTHĐT - Chương 05 51 d) Các biến ngồi (tiếp) Có hai vấn đề sử dụng biến ngồi: Vì biến ngồi truy nhập từ hàm chương trình nên dễ bị thay đổi làm liệu Vì biến ngồi có phạm vi hoạt động nơi chương trình nên ta phải quan tâm đến vấn đề kiểm soát tên biến để cho khơng có hai biến trùng tên Ngơ Công Thắng - Bài giảng LTHĐT - Chương 05 52 e) Các biến tĩnh cục (local static) Các biến tĩnh cục sử dụng ta muốn trì giá trị biến khai báo hàm lời gọi hàm Tức hàm kết thúc biến tĩnh vẫn chứa giá trị, hàm gọi lần lại sử dụng giá trị Phạm vi hoạt động biến tĩnh cục hàm thời gian tồn suốt thời gian chương trình chạy Trong lập trình hướng đối tượng người ta khơng dùng biến tĩnh mà dùng lớp đối tượng Ngô Công Thắng - Bài giảng LTHĐT - Chương 05 53 f) Đối tượng Đối tượng C++ đối xử biến Các đối tượng tạo dạng biến tự động, biến ngoài,… không tạo dạng biến ghi Phạm vi hoạt động thành viên liệu riêng (được khai báo private) lớp đối tượng hàm thành viên lớp Còn phạm vi hoạt động hàm thành viên (được khai báo public) tất hàm lớp chương trình Thời gian tồn liệu riêng (dù private hay public) thời gian tồn đối tượng Ngô Công Thắng - Bài giảng LTHĐT - Chương 05 54 Bài tập chương Bài Viết chương trình nhập vào số phức Tính tổng, hiệu tích số phức nhập Yêu cầu sử dụng toán tử +, -, * cho số phức Bài Viết chương trình sử dụng đối tượng ngăn xếp để đưa hình số nhị phân số nguyên dương n Ngô Công Thắng - Bài giảng LTHĐT - Chương 05 55 Bài tập chương 14 Bài Viết chương trình sử dụng đối tượng ngăn xếp để tìm đưa hình tất số nguyên tố nhỏ số nguyên dương n nhập vào từ bàn phím theo thứ tự giảm dần Bài Viết chương trình nhập vào danh sách n tên Sắp xếp danh sách tên theo vần ABC Sử dụng đối tượng xâu tự tạo để chứa tên Ngô Công Thắng - Bài giảng LTHĐT - Chương 05 56