Ngôn ngữ lập trình C++ 1 - Tuần 6

27 405 1
Ngôn ngữ lập trình C++ 1 - Tuần 6

Đ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

NGƠN NGỮ LẬP TRÌNH C++ Tuần Nội dung trình bày • • • • • Tham chiếu hàm có nhiều giá trị trả Hàm có đối số mặc định Quá tải hàm Hàm inline Hàm đệ quy Tham chiếu ? • Tham chiếu bí danh biến khác • Khi tạo tham chiếu, gán lên biến khác tham chiếu hoạt động biến gán đến • Cú pháp: &Tên tham chiếu = Biến tồn tại; • Ví dụ: int a = 6; int &b = a; Tham chiếu ? • Tham chiếu tương tự thực tế người gán bí danh khác (một người có nhiều tên gọi khác nhau) • Trong mơ hình nhớ máy tính địa tham chiếu địa biến mà tham chiếu đến Tham chiếu ? • Ta gán thêm lần tên tham chiếu cho biến khác int a = 5; int b = 8; int &c = a; &c = b; // Lỗi • Kiểu liệu tham chiếu phải trùng với kiểu liệu biến mà tham chiếu đến Tham chiếu ? • Ta tham chiếu đến bí danh (cũng tham chiếu) int a = 5; int &b = a; int &c = b; • Ta tham chiếu đến biến cụ thể không tham chiếu đến kiểu liệu int &x = int; // Lỗi Truyền tham chiếu cho hàm • Nhắc lại truyền tham trị: – Đối số truyền cho hàm tham trị – Ví dụ: void Doicho(int x, int y) { int tam; tam=x; x=y; y=tam; } – Giá trị tham số hình thức x, y đổi chỗ cho pham vi hàm Nhưng giá trị tham số thực không đổi chỗ cho Truyền tham chiếu cho hàm • Truyền tham chiếu cho hàm: – Để tham số thực đổi chỗ cho nhau, ta thay đối số truyền cho hàm tham trị – Ví dụ: void Doicho(int &x, int &y) { int tam; tam=x; x=y; y=tam; } – Khi goi hàm, biến truyền trưc tiếp, giá trị x y thực đổi chỗ cho int a = 5, b = 8; Doicho(a, b); Hàm trả nhiều giá trị • Ta học hàm trả giá trị, giá trị trả cho hàm (thơng qua câu lệnh return) • Chúng ta sử dụng kỹ thuật truyền tham chiếu để thay đổi biến bên hàm, ta coi hàm “trả về” nhiều giá trị Hàm trả nhiều giá trị • Ví dụ: – Xây dựng hàm trả giá trị diện tích chu vi hình trịn với đầu vào bán kính r void HinhTron(float r, float &dientich, float &chuvi) { dientich = 3.14 * r * r; chuvi = * 3.14 * r; } – Khi gọi hàm phải truyền biến vào tham chiếu để nhận giá trị trả HinhTron(r, dt, cv); Hàm có đối số mặc định • Các đối mặc định phải đối số cuối tính từ trái sang phải – Ví dụ: • Các hàm có đối số mặc định sau đúng: int tinhToan(int x, int y = 7); void soThuc(float x, int y = 12, float z = 1.1); • Các hàm có đối số mặc định sau sai: int tinhToan(int x = 6, int y); void soThuc(float x = 2.3, int y = 12, float z); Quá tải hàm (Overloading Function) • Trong ngơn ngữ C ngơn ngữ khác, ta thấy hàm đảm nhận chức có tên riêng biệt • Tuy nhiên có nhiều hàm có ý nghĩa lại có tên gọi giá trị đầu vào hay giá trị trả hàm có kiểu liệu khác – Ví dụ: Trong C có hàm trả giá trị tuyệt đối: int abs(int i); long labs(long l); double fabs(double d); Quá tải hàm • C++ cho phép tạo hàm khác có tên trùng Đây q tải hàm • Ví dụ: int abs(int i); long abs(long i); double abs(double d); int Tong(int a, int b); int Tong(int a, int b, int c); long Tong(long a, long b); Các đặc điểm tải hàm • Các hàm tải có đặc điểm sau: – Số lượng tham số hàm tải khác Nếu số lượng tham số trùng kiểu liệu tham số phải khác – Giá trị trả hàm tải trùng khác miễn tham số phải khác Các đặc điểm tải hàm • Các khai báo sau bị báo lỗi biên dịch: int Tong(int a, int b); long Tong(int a, int b); • Các khai báo sau khơng bị báo lỗi biên dịch: long Tong(int a, float b); long Tong(int a, int b); float Tong(int a); Các đặc điểm tải hàm • Chú ý: Cần đảm bảo kiểu khác tham số hàm tải kiểu khác thực • Ví dụ: Kiểu typedef thật biệt danh kiểu có, đoạn chương trình sau bị sai typedef int Songuyen; int Tang(int a); int Tang(Songuyen a); Hàm inline • Khi định nghĩa hàm, trình biên dịch tạo thị nhớ Khi hàm gọi, chương trình tự động chuyển quyền điều khiển đến đoạn mã chứa thị hàm • Các thực cho phép tiết kiệm nhớ thực chương trình lại làm giảm tốc độ thực chương trình Hàm inline • Ta sử dụng từ khoá inline khai báo hàm để trình biên dịch khơng tạo thị hàm Thay vào nơi chương trình có lời gọi hàm, trình biên dịch chèn đoạn mã hàm vào chỗ • Cách sử dụng từ khoá inline cho phép tăng tốc độ thực chương trình, lại chiếm khơng gian nhớ nhiều hơn, ta nên sử dụng từ khố inline hàm khơng lớn Hàm inline • Ví dụ: inline double cube(doule side) { return side * side * side; } void main() { double sideValue = 4; cout

Ngày đăng: 27/10/2013, 07:15

Hình ảnh liên quan

• Trong mô hình bộ nhớ máy tính thì địa chỉ của tham chiếu chính là địa chỉ của biến  mà nó tham chiếu đến. - Ngôn ngữ lập trình C++ 1 - Tuần 6

rong.

mô hình bộ nhớ máy tính thì địa chỉ của tham chiếu chính là địa chỉ của biến mà nó tham chiếu đến Xem tại trang 4 của tài liệu.
– Giá trị của các tham số hình thức x, y chỉ được đổi chỗ cho nhau trong pham vi của hàm - Ngôn ngữ lập trình C++ 1 - Tuần 6

i.

á trị của các tham số hình thức x, y chỉ được đổi chỗ cho nhau trong pham vi của hàm Xem tại trang 7 của tài liệu.

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan