Khuôn hình lớp

Một phần của tài liệu Giáo trình bài tập lập trình hướng đối tượng (Trang 45)

Trong chương trước ta đã định nghĩa cho lớp SO, giá trị các số là kiểu int. Nếu ta muốn làm việc với các số kiểi float, double,... thì ta phải định nghĩa lại một lớp khác tương tự, trong đó kiểu dữ liệu int cho dữ liệu giatri sẽ được thay bằng float,double,...

Để tránh sự trùng lặp trong các tình huống như trên, chương trình dịch C++ cho phép định nghĩa một khuôn hình lớp và sau đó, áp dụng khuôn hình lớp này với các kiểu dữ liệu khác nhau để thu được các lớp thể hiện như mong muốn. Ví dụ :

template <class kieuso> class SO { kieuso giatri; public : SO (kieuso x =0); void Hienthi(); };

- Khi hàm thành phần được định nghĩa bên ngoài lớp ,phải nhắc lại:

template <danh sách tham số kiểu> trước định nghĩa hàm: Ví dụ: template <class kieuso> void SO<kieuso>::Hienthi()

#include <iostream.h>

template <class kieuso1,class kieuso2> kieuso1 min(kieuso1 a,kieuso2 b) { return a<b ? a : b; } void main(){ float a =2.5; int b = 8;

cout << "so nho nhat la :" << min(a,b); }

46

{

cout <<giatri; }

- Sau khi một khuôn hình lớp đã được định nghĩa, nó sẽ được dùng

để khai báo các đối tượng theo dạng sau :

Tên_lớp <Kiểu> Tên_đối_tượng; Bài tập:

1. a. Viết một khuôn hình hàm (function template) tên display() mà trình

bày ra giá trị của đối số đơn được truyền đến hàm khi hàm được gọi. b. Đưa khuôn hình hàm ở a. vào trong một chương trình C++ mà gọi hàm bốn lần: một lần với đối số kiểu char, một lần với đối số nguyên, một lần với đối số thực chính xác đơn và một lần với đối số thực chính xác kép.

2. a. Viết một khuôn hình hàm (function template) tên maximum( ) mà trả

về trị lớn nhất của hai đối số được truyền đến hàm khi hàm được gọi. b. Đưa khuôn hình hàm ở a. vào trong một chương trình C++ mà gọi hàm hai lần: một lần với 2 đối số kiểu số nguyên, một lần với 2 đối số thực chính xác đơn.

c. Định nghĩa chồng (overload) khuôn hình hàm maximum ở trên, có đối số là một mảng kiểu T (dùng khuôn hình template), trả ra giá trị lớn nhất của mảng. Đưa khuôn hình hàm vào trong một chương trình C++ mà gọi hàm hai lần: một lần với mảng kiểu số nguyên, một lần với mảng kiểu số thực chính xác đơn.

3. a. Xây dựng khuôn hình hàm Swap cho phép tráo đổi giá trị 2 biến số

truyền vào

b. Xây dựng khuôn hình hàm Sort dùng để sắp xếp gía trị của một mảng trong đó có sử dụng khuôn hình hàm Swap

c. Xây dựng khuôn hình hàm Print để in giá trị của một mảng ra màn hình.

Một phần của tài liệu Giáo trình bài tập lập trình hướng đối tượng (Trang 45)

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

(46 trang)