Understanding Template in C++ (part 1)

Đối với những bạn chưa học về hướng đối tượng thì khi chưa dùng từ khóa tempalte trong lập trình C++ thì việc viết một function có thể nói là chỉ đáp ứng cho một kiểu dữ liệu cụ thể, (A, tớ có ý kiến, có bạn nói rằng nếu tớ dùng structure thì vẫn có thể làm việc với nhiều kiểu dữ liệu chứ, và tớ cũng có thể pass nó vào trong function của mình  🙂 ), À tớ chưa nói hết, thực ra tác dụng của template là function bạn viết ra có thể sử dụng cho nhiều kiểu dữ liệu khác nhau, template sinh ra là đáp ứng những công việc mà đoạn mã của bạn được lặp đi lặp lại một cách giống nhau đến 101%, structure có vậy hok các bạn, structure bạn viết ra thì nó cũng chỉ đáp ứng cho kiểu dữ liệu mà bạn định nghĩa trong strucure của bạn thôi, ok

Ví dụ như bạn viết hàm so sách hai số, công hai số … cho dù hai số đó có là kiểu dữ liệu gì đi chăng nữa thì mã của bạn cũng giống nhau mà thôi, cũng chỉ là  (return a+b) ok.

Giờ chúng ta cùng nói cú pháp khai báo template :

nó bắt đầu bằng từ khóa template sau đó là cặp ngoặc nhọn, trong ngoặc nhọn sẽ là một cái tên mà cái tên nay sẽ đại diện cho kiểu dữ liệu của bạn, mình đánh dấu chỗ này là (*) để lát nữa mọi người đọc phần code demo để hiểu chỗ này nhé.

Các bạn thấy đó nó output là 6 và 10, kết quả đúng., nhưng để ý rằng cùng một phương thức GetMax mà hai biến truyền vào lại là hai kiểu dữ liệu khác nhau, rất tiện lợi đúng khống, một công chí ít là hơn đôi việc.

Từ đoạn mã này rút ra được một vài quy tắc sau.

1. khai báo template

2.phương thức thành viên của template sẽ được viết trong template (class T) chính là đại diện cho kiểu dữ liệu mà mình truyền vào, nếu là int thì chữ T đó sẽ được thay thế bằng Int, nếu là double sẽ được thay thế là double ….so on

3. Để gọi một phương thức trong template thì     Tên_phương_thức <kiểu_dữ_liệu_muốn_làm_việc> (tham_số_truyền_vào);

(Cảm ơn các bạn đọc đến đây … )

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s