Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 16 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
16
Dung lượng
79,5 KB
Nội dung
Ngôn ngữlậptrình C++1 THAM CHIẾU (Reference) Tham chiếu là gì? Giới hạn của tham chiếu Truyền tham chiếu cho hàm Hàm trả về nhiều giá trị Hàm tạo bản sao Con trỏ và tham chiếu Tham chiếu con trỏ THAM CHIẾU LÀ GÌ ? Là một bí danh của biến khác Khi tạo ra một tham chiếu, gán nó lên một đối tượng khác thì tham chiếu hoạt động như chính đối tượng đã gán đến nó Cú pháp: Kiểu &TênThamChiếu = MộtĐốiTượngĐãTồnTại; Ví dụ: Sinhvien sv_lop_T14A; Sinhvien &sv1 = sv_lop_T14A; THAM CHIẾU LÀ GÌ ? Địa chỉ của tham chiếu: là địa chỉ của đối tượng mà nó tham chiếu đến. Tương tự như trong thực tế khi một bí danh đã được gắn với một người nào đó cụ thể. Chú ý: không thể gán lại thêm một lần nữa tên của tham chiếu cho một đối tượng khác. GIỚI HẠN CỦA THAM CHIẾU - Có thể thực hiện tham chiếu với đối tượng nào? phải tham chiếu đến một đối tượng cụ thể! - Ví dụ các khai báo sau là sai 1) int &sn=int; 2) Sinhvien &sv1=Sinhvien; - Các khai báo đúng 1) int sn=20; int &i=sn; 2) Sinhvien sv_lop_T14A; Sinhvien &sv1 = sv_lop_T14A; TRUYỀN THAM CHIẾU CHO HÀM(1) Nhắc lại về truyền tham trị: Đối số truyền cho hàm là các giá trị Câu lệnh return cho phép trả về một giá trị void Doicho(int x, int y) { int tam; tam=x; x=y; y=tam; } Giá trị của các đối số x, y chỉ được đổi chỗ cho nhau trong pham vi của hàm TRUYỀN THAM CHIẾU CHO HÀM(2) Giải quyết bằng con trỏ void Doicho(int *px, int *py); { int tam; tam=*px; *px=*py; *py=tam; } Khi gọi hàm phải truyền đối số là con trỏ int x=5,y=7; Doicho(&x,&y); Lúc này 2 giá trị x và y mới thực sự được đổi chỗ cho nhau TRUYỀN THAM CHIẾU CHO HÀM(3) Giải quyết bằng truyền tham chiếu đến hàm: Đối tượng thực sự được truyền đến hàm Có thể sửa đổi được giá trị của đổi tượng void Doicho(int &x, int &y) { int tam; tam=x; x=y; y=tam;} Khi goi hàm, biến được truyền trưc tiếp, 2 giá trị x và y thực sự được đổi chỗ cho nhau Doicho(x,y); HÀM TRẢ VỀ NHIỀU GIÁ TRỊ(1) Hàm chỉ có thể trả về một giá trị. Chúng ta sẽ sử dụng kỹ thuật truyền tham chiếu để thay đổi các đối tượng ngoài ngay bên trong hàm, và như vậy hàm có thể “trả về” nhiều giá trị Sử dụng con trỏ Sử dụng tham chiếu HÀM TRẢ VỀ NHIỀU GIÁ TRỊ(3) Sử dụng con trỏ void HinhTron(int r, int *dientich, int *chuvi) { *dientich = 3.14 * r * r; *chuvi = 2 * 3.14 * r; } Khi gọi hàm phải truyền địa chỉ RutgonPS(r, &dt,&cv); [...]... Doicho(Sinhvien *&sv1, Sinhvien *&sv2) { SinhVien *temp; temp = sv1; sv1 = sv2; sv2 = temp; } Bài tập 1. Xây dựng lớp hình chữ nhật với các thuộc tính sau: Xtt,Ytt, Xpd, Ypd- là tọa độ trái-trên, phải-dưới của một hình chữ nhật Với các phương thức sau: Hàm tạo, Hàm hủy, Phương thức đặt giá trị cho các thuộc tính, và phương thức lấy giá trị của các thuộc tính(dùng tham chiếu và con trỏ) Viết chương trình minh...HÀM TRẢ VỀ NHIỀU GIÁ TRỊ(4) Sử dụng tham chiếu void HinhTron(int r, int &dientich, int &chuvi) { dientich = 3 .14 * r * r; chuvi = 2 * 3 .14 * r; } Khi gọi hàm phải truyền địa chỉ RutgonPS(r, dt, cv); HÀM TẠO BẢN SAO (1) (copy constructor) Hàm tạo bản sao: Sinhvien::Sinhvien() { Cout . Ngôn ngữ lập trình C+ +1 THAM CHIẾU (Reference) Tham chiếu là gì? Giới hạn của tham. là sai 1) int &sn=int; 2) Sinhvien &sv1=Sinhvien; - Các khai báo đúng 1) int sn=20; int &i=sn; 2) Sinhvien sv_lop_T14A; Sinhvien &sv1 = sv_lop_T14A;