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

Bài giảng lập trình hướng đối tượng chương 4 GV dương khai phong

29 177 0

Đ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

Định dạng
Số trang 29
Dung lượng 3,71 MB

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

Nội dung

 Khái niệm đa năng hóa toán tử Cách khai báo trước: Phanso congPhanso Cách khai báo đa năng: Phanso operator +Phanso... Định nghĩa lại phép gán “=” để giải quyết các trường hợp sau:  V

Trang 1

Số tiết lý thuyết: 45 tiết

Số tiết thực hành: 30 tiết

Trang 2

http://sites.google.com/site/khaiphong

 Nội dung môn học:

Trang 3

 Khái niệm đa năng hóa toán tử

 Đa năng hóa toán tử hai ngôi (+,-,*,/,…)

 Định nghĩa lại phép gán (=)

 Đa năng hóa toán tử nhập/xuất (>>,<<)

 Chương 4: Đa năng hoá toán tử

Trang 4

(+,- Ví dụ:

Ưu điểm của đa năng hoá toán tử?

Giúp cho chương trình dễ hiểu và dễ truy

 Chương 4: Đa năng hoá toán tử

Trang 5

Khái niệm đa năng hóa toán tử

Cách khai báo trước: Phanso cong(Phanso) Cách khai báo đa năng: Phanso operator +(Phanso)

.* :: ?: sizeof

Trang 6

http://sites.google.com/site/khaiphong

 Đa năng hóa toán tử hai ngôi (+,-,*,/,…)

 Định nghĩa lại phép gán (=)

 Đa năng hóa toán tử nhập/xuất (>>,<<)

 Chương 4: Đa năng hoá toán tử

Trang 7

Đa năng hóa toán tử một ngôi (++, )

Các toán tử này được sử dụng theo 2 cách: toán

tử đứng trước (prefix) (++a) hay toán tử đứng sau (postfix) (a++)

Ví dụ: cho biết kết quả của CT sau

// a=6, b=6 // a=6, b=5

Trang 8

 Cú pháp khai báo trong lớp:

 Toán tử đứng trước (prefix):

<Kiểu dữ liệu trả về> operator ++()

 Toán tử đứng sau (postfix):

<Kiểu dữ liệu trả về> operator ++( int )

Định nghĩa bên ngoài lớp:

<Kiểu dữ liệu trả về> <Tên_lớp>:: operator ++() {

}

Ví dụ:

 Chương 4: Đa năng hoá toán tử

Tham số int được gọi là tham số giả (chỉ định toán tử đứng sau)

Trang 9

// KQ: a=9/2 và b=7/2

Trang 10

http://sites.google.com/site/khaiphong

 Đa năng hóa toán tử hai ngôi (+,-,*,/,…)

 Định nghĩa lại phép gán (=)

 Đa năng hóa toán tử nhập/xuất (>>,<<)

 Chương 4: Đa năng hoá toán tử

Trang 11

Đa năng hóa toán tử hai ngôi

Trang 13

 Khái niệm đa năng hóa toán tử

 Đa năng hóa toán tử hai ngôi (+,-,*,/,…)

 Định nghĩa lại phép gán (=)

 Đa năng hóa toán tử nhập/xuất (>>,<<)

 Chương 4: Đa năng hoá toán tử

Trang 14

Định nghĩa lại phép gán “=” để giải quyết các trường hợp sau:

 Vấn đề con trỏ Null trong cấp phát động(Buổi 2)

 Vấn đề chuyển đổi kiểu (Buổi 2)

Trang 15

 Vấn đề con trỏ Null trong cấp phát động:

String(char *s=“”){p=strdup(s);}

String& operator=(const String&); ~String(){delete p;}

Trang 16

http://sites.google.com/site/khaiphong

 Chương 4: Đa năng hoá toán tử

 Vấn đề chuyển đổi kiểu:

Khi gặp câu lệnh gán như trên, CT lần

lượt thực hiện các thao tác sau:

 Có định nghĩa phép gán “=” tương

ứng hay không?

 Hàm khởi tạo chuyển đổi kiểu có

// Error

Trang 17

 Khái niệm đa năng hóa toán tử

 Đa năng hóa toán tử hai ngôi (+,-,*,/,…)

 Định nghĩa lại phép gán (=)

 Đa năng hóa toán tử nhập/xuất (>>,<<)

 Chương 4: Đa năng hoá toán tử

Trang 18

Đa năng hóa toán tử xuất:<<

friend ostream & operator <<( ostream &, const <tenlop>&)

Đa năng hóa toán tử nhập:>>

friend istream & operator >>( istream &, <tenlop>&)

 Ví dụ:

 Chương 4: Đa năng hoá toán tử

Trang 19

 Đa năng hoá toán tử nhập/xuất (>>,<<) cho lớp phân số:

PS(int t=0,int m=1){tu=t;mau=m;}

friend ostream & operator <<( ostream &, const PS&);

friend istream & operator >>( istream &, PS&);

istream & operator >>( istream & is, PS& p){

cout<< "Nhap tu: ";

Trang 20

ĐH CÔNG NGHỆ THÔNG TIN http://sites.google.com/site/khaiphong

Trang 22

http://sites.google.com/site/khaiphong

Câu 1: Cho Phát biểu nào sau đây là ĐÚNG trong đa năng

hoá toán tử (operator overloading)

 Bài tập trắc nghiệm

A Có thể thay đổi kết quả thực hiện của các toán tử trên các kiểu dữ liệu cơ sở

(built-in)

B Có thể định nghĩa thêm toán tử mới ngoài những toán tử đã có trong C++

C Có thể thay đổi số lượng tham số (số ngôi) của các toán tử

D Không thể thay đổi độ ưu tiên của các toán tử

Trang 23

Câu 2: Toán tử nào có thể được viết lại (overloaded trong C++

A = (toán tử gán)

B ?: (toán tử điều kiện)

C sizeof (toán tử xác định kích thước dữ liệu)

D :: (toán tử phạm vi)

Trang 24

http://sites.google.com/site/khaiphong

Câu 3: Để đa năng hoá toán tử >> dùng để nhập các thông tin

của đối tượng thuộc class Data (ví dụ như: cin>>dataToPrint) Dòng đầu tiên trong hàm cài đặt toán tử là:

 Bài tập trắc nghiệm

A ostream operator>>(ostream &input,const Data &dataToPrint)

B ostream operator>>(istream &input,const Data &dataToPrint)

C istream &operator>>(istream &input, Data dataToPrint)

D istream &operator>>(istream &input, Data &dataToPrint)

Trang 25

Câu 4: Xét đoạn chương trình khai báo class Data như sau:

class Data{

private: int a;

public:

Data operator (int);

void Giam(){ a=a-1;}

Phần cài đặt toán tử nào sau đây là đúng

B Data Data::operator – (int){

Trang 28

4 C b= a (trừ trước gán sau) b=a (gán trước trừ sau: tức giá trị b phải bằng giá trị a)

Trang 29

ĐÁP ÁN:

6 D Hàm ảo phải là hàm thành viên của lớp

7 A Các khái niệm B,D,C là những khái niệm SAI

8 D Câu lệnh d.BaseA::Print(); đã xác định rõ hàm Print() là của lớp A

9 C pb là con trỏ lớp cơ bản nên có thể trỏ tới đối tượng là lớp dẫn xuất nhưng ngược lại thì không

Derive d;

d là đối tượng lớp dẫn xuất nên trỉnh tự gọi hàm khởi tạo: lớp cơ bản gọi trước, lớp dẫn xuất gọi sau

Ngày đăng: 04/12/2015, 14:36

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm