7. Các kiểu dữ liệu người dùng định nghĩa
1.5 Các vấn đề khác
Hàm inline
Các hàm inline được xác định bằng từ khóa inline. Ví dụ: inline myFunction(int);
37 Khi chúng ta sử các hàm trong mô ̣t chương trình C hoă ̣c C ++ thường thì phần thân hàm sau khi đươ ̣c biên di ̣ch sẽ là mô ̣t tâ ̣p các lê ̣nh máy . Mỗi khi chương trình go ̣i tới hàm , đoa ̣n mã của hàm sẽ được na ̣p vào stack để thực hiê ̣n sau đó trả về 1 giá trị nào đó nếu có và thân hàm được loại khỏi stack thực hiện của chương trình. Nếu hàm được go ̣i 10 lần sẽ có 10 lê ̣nh nhảy tương ứng với 10 lần na ̣p thân hàm để thực hiê ̣n . Với chỉ thi ̣ inline chúng ta muốn gơ ̣i ý cho trình biên di ̣ch là thay vì na ̣p thân hàm như bình thường hãy chèn đoa ̣n mã của hàm vào đúng chỗ mà nó được gọi tới trong chương trình . Điều này rõ ràng làm cho chương trình thực hiê ̣n nhanh hơn bình thường . Tuy nhiên inline chỉ là mô ̣t gợi ý và không phải bao giờ cũng được thực hiê ̣n . Với các hà m phức ta ̣p (chẳng ha ̣n như có vòng lă ̣p) thì không nên dùng inline . Các hàm inline do đó thường rất gắn chẳng hạn như các hàm chỉ thực hiện một vài thao tác khởi tạo các biến (các hàm cấu tử của các lớp ). Với các lớp khi khai báo các hàm inline chúng ta có thể không cần dùng từ khóa inline mà thực hiê ̣n cài đă ̣t ngay sau khi khai báo là đủ.
Hàm đệ qui
Đê ̣ qui là mô ̣t cơ chế cho phép mô ̣t hàm có thể go ̣i tới chính nó . Kỹ thuật đệ qui thường gắn với các vấn đề mang tính đê ̣ qui hoă ̣c được xác đi ̣nh đê ̣ qui . Để giải quyết các bài toán có các chu trình lồng nhau người ta thường dùng đệ qui . Ví dụ như bài toán tính giai thừa, bài toán sinh các hoán vị của n phần tử
Sƣ̉ du ̣ng tƣ̀ khóa const
Đôi khi chúng ta muốn truyền mô ̣t tham số theo đi ̣a chỉ nhưng không muốn thay đổi tham số đó , để tránh các lỗi có thể xảy ra chúng ta có thể sử dụng từ khóa const . Khi đó nếu trong thân hàm chúng ta vô ý thay đổi nô ̣i dung của biến trình biên di ̣ch sẽ báo lỗi . Ngoài ra việc sử dụng từ khóa const còn mang nhiều ý nghĩa khác liên quan tới các phương thức của lớp (chúng ta sẽ học trong chương 5).