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

Lập trình hướng đối tượng

34 16 0

Đ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

Hàm đa & Tham chiếu „ BÀI Lập trình Hướng đối tượng với C++/Bài Mục đích học „ „ Các đối số ngầm định hàm Định nghĩa sử dụng hàm bạn „ „ „ „ Thuận lợi Bất lợi Lớp bạn Hàm đa „ „ „ Đối số với kiểu liệu khác Số lượng đối số khác Phạm vi hàm đa Lập trình Hướng đối tượng với C++/Bài Mục đích học „ Cách dùng đối số tham chiếu „ „ „ Truyền tham chiếu cho hàm Trả tham chiếu từ hàm Định nghĩa sử dụng hàm chỗ (inline functions) Lập trình Hướng đối tượng với C++/Bài 3 Hàm „ Một khai báo hàm phải gồm : „ „ „ „ „ Tên hàm Kiểu giá trị trả (nếu có) Số lượng kiểu liệu đối số Ta khơng cần phải cung cấp tên đối số khai báo hàm Ta gọi hàm mà không cần phải cung cấp tất đối số Lập trình Hướng đối tượng với C++/Bài Hàm với đối số ngầm định „ „ Ta phải cung cấp giá trị cho đối số ngầm định khai báo hàm Trong lời gọi hàm đối số ngầm định không cung cấp chương trình tự động lấy giá trị mà ta gán cho đối số khai báo hàm Ví dụ xét khai báo hàm sau : „ „ void func(int = 1, int = 3, char = ‘*’); void func(int num1, int num2=3, char = ‘*’); Lập trình Hướng đối tượng với C++/Bài Giá trị ngầm định đối số „ Nếu đối số gán giá trị ngầm định tất đối số theo sau phải gán giá trị ngầm định Ví dụ : „ „ „ „ void func(int =1, int num2, char =‘+’); //Lỗi Giá trị ngầm định phải với kiểu khai báo Ta cung cấp giá trị ngầm định khai báo định nghĩa hàm hai Nên cung cấp giá trị ngầm định khai báo không nên định nghĩa hàm Lập trình Hướng đối tượng với C++/Bài Giá trị ngầm định đối số (tiếp) „ Xét lời gọi hàm sau : „ „ „ „ „ „ func(2, 13, ‘+’); //Cung cấp đối số func(1); //Đối số thứ nhận giá trị ngầm định func(2, 25); //Đối số thứ nhận giá trị ngầm định func(); //Cả đối số nhận giá trị ngầm định func(2, , ‘+’); //Lỗi Nếu ta khơng cung cấp đối số biên dịch lấy giá trị ngầm định nên gây lỗi Lập trình Hướng đối tượng với C++/Bài Tiện lợi đối số ngầm định „ „ Đối số ngầm định hữu dụng trường hợp đối số thường nhận giá trị lời gọi hàm khác Nó hữu ích ta muốn mở rộng hàm có sẵn cách thêm đối số vào Hàm đáp ứng lời gọi cũ đồng thời cho phép ta thực lời gọi với đối số Lập trình Hướng đối tượng với C++/Bài Hàm bạn „ „ Những hàm khơng phải hàm thành viên khơng thể truy cập liệu nội (private) Tuy nhiên có trường hợp ta cần truy cập tới liệu mà không dùng hàm thành viên Một hàm hàm thành viên phép truy cập liệu nội lớp gọi hàm bạn Lập trình Hướng đối tượng với C++/Bài Hàm bạn (tiếp) „ Ta dùng từ khóa friend để khai báo hàm bạn lớp : class Person{ public: void getdata(); friend void display(Person abc); }; void display(Person abc){ //Khơng cần dùng tốn tử :: } „ Từ khóa friend xuất khai báo, khơng xuất định nghĩa hàm Lập trình Hướng đối tượng với C++/Bài 10 Hàm đa „ „ Dùng để tạo tập hợp hàm có chung tên thực tác vụ có danh sách đối số khác Đa thể tức có nhiều hình thái khác Hàm đa thể tính đa thể hình thái khác „ „ „ „ void void void void display(); display(const char*); display(int one, int two); display(float number); Lập trình Hướng đối tượng với C++/Bài 20 Hàm đa (tiếp) „ „ Tùy vào ngữ cảnh (số lượng kiểu đối số cung cấp) mà biên dịch xác định hàm gọi Ta nên sử dụng hàm đa trường hợp thực tác vụ dựa tập hợp liệu khác Lập trình Hướng đối tượng với C++/Bài 21 Lợi ích „ „ „ Loại bỏ việc sử dụng nhiều tên hàm cho tác vụ Chương trình trở nên sáng sủa hơn, truy tìm lỗi dễ dàng Dễ bảo trì chương trình Lập trình Hướng đối tượng với C++/Bài 22 Đa với kiểu liệu khác „ Bộ biên dịch phân biệt hàm đa có số lượng đối số kiểu liệu chúng khác : „ „ „ „ int square(int); float square(float); double square(double); Số lượng hàm đa khơng hạn chế miễn hàm có khn mẫu đối số Lập trình Hướng đối tượng với C++/Bài 23 Đa với số lượng đối số khác int int int int „ „ square(int); square(int, int, int); asq = square (a); bsq = square (x, y, z); Bộ biên dịch chọn thực thi hàm có đối số khớp với đối số thực, kích phát lỗi khơng tìm thấy Thứ tự khai báo khơng ảnh hưởng đến việc lựa chọn Bộ biên dịch không xét đến kiểu trả hàm Lập trình Hướng đối tượng với C++/Bài 24 Hàm đa – nguyên tắc phạm vi „ Các hàm đa phải khai báo phạm vi class first{ public: void display(); }; class second{ public: void display(); }; Lập trình Hướng đối tượng với C++/Bài 25 Hàm đa – nguyên tắc phạm vi void main(){ first object1; second object2; object1.display(); object2.display(); } „ Trong ví dụ hàm display() khai báo hai phạm vi khác hàm đa Lập trình Hướng đối tượng với C++/Bài 26 Truyền đối số giá trị „ „ „ „ Hàm gọi tạo biến có kiểu với đối số gán giá trị đối số cho biến Hàm đuợc gọi không truy xuất trực tiếp đến biến nguyên thủy chương trình gọi, mà tạo giá trị Thay đổi giá trị không ảnh hưởng đến giá trị gốc (biến nguyên thủy) Hữu dụng ta không muốn hàm thay đổi giá trị gốc Lập trình Hướng đối tượng với C++/Bài 27 Truyền đối số tham chiếu „ „ „ Thay truyền giá trị cho hàm ta truyền tham chiếu biến nguyên thủy Cho phép hàm truy cập đến biến thực tế chương trình gọi Cho phép hàm trả nhiều giá trị cho chương trình gọi qua đối số giữ chỗ hàm Lập trình Hướng đối tượng với C++/Bài 28 Truyền đối số tham chiếu (tiếp) „ Tham chiếu cung cấp cho ta bí danh đối tượng void swap(int& i, int& j){ int tmp = i; i = j; j = tmp; } main(){ int x, y; swap(x, y); } „ Toán tử & báo cho biên dịch biết biến tham chiếu đến biến thực tế truyền từ chương trình gọi Lập trình Hướng đối tượng với C++/Bài 29 Truyền đối số tham chiếu (tiếp) „ „ „ Tham chiếu trỏ Tham chiếu đối tượng trỏ trỏ đến đối tượng đối tượng Truyền tham chiếu hiệu đối số cấu trúc liệu lớn Đây cách để ẩn dấu thông tin Lập trình Hướng đối tượng với C++/Bài 30 Trả tham chiếu từ hàm „ „ Tham chiếu trả biến mà bí danh Rất hữu ích dùng đẻ trả đối tượng int &fn(int &num) {return (num);} void main(){ int n1, n2; n1 = fn(n2); } „ Ta dùng dấu & trước tên hàm để báo hàm trả biến tham chíêu Lập trình Hướng đối tượng với C++/Bài 31 Hàm chỗ „ „ „ Khi gặp lời gọi hàm biên dịch nhảy đến nơi chứa hàm để thực thi lệnh hàm trở lệnh tiếp sau lời gọi hàm Điều tiết kiệm nhớ thời gian thực thi dài Để giảm thời gian thực thi chương trình hàm ngắn (chỉ có lệnh) ta dùng hàm chỗ Hàm chỗ viết hàm bình thường biên dịch mã lệnh hàm chèn trực tiếp lời gọi hàm „ inline float converter(float dollars); Lập trình Hướng đối tượng với C++/Bài 32 Hàm chỗ (tiếp) main() main() fn1(); fn1() statement; mfunc(); fn1(); funcy(); fn1() Mã lệnh hàm đặt riêng fn1() fn1() fn1() Lập trình Hướng đối tượng với C++/Bài 33 Hàm chỗ - vài lưu ý „ „ Phải định nghĩa trước gọi hàm Đơi biên dịch bỏ qua việc khai báo hàm inline xem hàm bình thường Lập trình Hướng đối tượng với C++/Bài 34

Ngày đăng: 22/11/2020, 12:31

Xem thêm:

Mục lục

    Hàm đa năng & Tham chiếu

    Mục đích bài học

    Mục đích bài học

    Hàm với đối số ngầm định

    Giá trị ngầm định của các đối số

    Giá trị ngầm định của các đối số (tiếp)

    Tiện lợi của đối số ngầm định

    Chức năng của hàm bạn

    Lớp bạn – ví dụ (tiếp)

    Hàm đa năng (tiếp)

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w