1. Trang chủ
  2. » Công Nghệ Thông Tin

ngôn ngữ lập trình C++ 1

16 205 0
Tài liệu đã được kiểm tra trùng lặp

Đ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

Thông tin cơ bản

Tiêu đề Tham chiếu là gì?
Chuyên ngành Ngôn ngữ lập trình C++
Định dạng
Số trang 16
Dung lượng 79,5 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

 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

Trang 1

Ngôn ngữ lập trình C++1

Trang 2

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ỏ

Trang 3

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;

Trang 4

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

Trang 5

GIỚI HẠN CỦA THAM CHIẾU

- Ví dụ các khai báo sau là sai

1) int &sn=int;

2) Sinhvien &sv1=Sinhvien;

1) int sn=20;

int &i=sn;

2) Sinhvien sv_lop_T14A;

Sinhvien &sv1 = sv_lop_T14A;

Trang 6

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

Trang 7

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

Trang 8

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);

Trang 9

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

Trang 10

HÀM TRẢ VỀ NHIỀU GIÁ TRỊ(3)

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);

Trang 11

HÀM TRẢ VỀ NHIỀU GIÁ TRỊ(4)

void HinhTron(int r, int &dientich, int &chuvi) {

dientich = 3.14 * r * r;

chuvi = 2 * 3.14 * r;

}

RutgonPS(r, dt, cv);

Trang 12

HÀM TẠO BẢN SAO (1) (copy constructor)

 Hàm tạo bản sao:

Sinhvien::Sinhvien() {

Cout<<“Ham tao\n”;

} Sinhvien::Sinhvien(Sinhvien&) {

Cout<<“Ham tao ban sao\n”;

}

Trang 13

HÀM TẠO BẢN SAO (2)

 Đối số ở dạng tham trị hoặc khi hàm trả về giá trị thì một bản sao của đối số sẽ được tạo ra

 Nếu đối số là đối tượng của lớp thì hàm tạo bản sao sẽ được gọi

 Giả sử có 2 hàm

Sinhvien Ham1(Sinhvien sv);

Sinhvien Ham2(Sinhvien *sv);

 Khi hàm 1 được gọi, phải truyền đối số ở dạng tham trị nên hàm tạo bản sao được gọi

 Khi hàm 2 được gọi, truyền đối số ở dạng tham chiếu, hàm tạo bản sao không được gọi

Trang 14

CON TRỎ & THAM CHIẾU

 Qua các ví dụ đã phân tích, việc sử dụng con trỏ và tham chiếu cho ta kết quả giống nhau

 Nên sử dụng tham chiếu thay cho con trỏ nếu có thể

 Nếu ta làm việc với nhiều đối tượng, chỉ có cách duy nhất là

sử dụng con trỏ

 Hơn nữa tham chiếu không thể nhận giá trị null

Trang 15

THAM CHIẾU CON TRỎ (Pointer Reference)

giá trị địa chỉ trong con trỏ.

Ví dụ:

void Doicho(Sinhvien *&sv1, Sinhvien *&sv2)

{ SinhVien *temp;

temp = sv1;

sv1 = sv2;

sv2 = temp;

}

Trang 16

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ọa

2 Viết chương trình xây dựng lớp Điểm trong không gian 2 chiều với các thuộc tính sau: hoành độ x, tung độ y là các số thực 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 x và y, phương thức lấy giá trị x, phương thức lấy giá trị y và phương thức lấy cả 2 giá trị x, y Viết chương trình minh họa

Ngày đăng: 19/10/2013, 02:15

TỪ KHÓA LIÊN QUAN

w