4 Nạp Chồng Toán Tử - Tài Liệu Text - 123doc

Tải bản đầy đủ (.doc) (5 trang)
  1. Trang chủ
  2. >>
  3. Công Nghệ Thông Tin
  4. >>
  5. Kỹ thuật lập trình
4 nạp chồng toán tử

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (99.1 KB, 5 trang )

HỌC VIỆN KỸ THẬT QUÂN SỰKHOA CÔNG NGHỆ THÔNG TINĐỀ CƯƠNG BÀI GIẢNGHỌC PHẦN: LẬP TRÌNH HƯỚNG ĐỐI TƯỢNGBộ môn: Công nghệ phần mềmGiáo viên: 1) Phạm Thị Bích VânBài IV: Nạp chồng toán tử1. Thời lượng: 6 tiết (GV giảng: 3; bài tập: 3)2. Mục đích, yêu cầu: Giới thiệu sinh viên ý nghĩa, cách xây dựng nạp chồng toán tử. Cách nạp chồng cáctoán tử chèn dòng, trích dòng, các toán tử đặc biệt.3. Nội dung:a) Nội dung chi tiết:• Giới thiệu•Trong chương này tìm hiểu làm thế nào cho phép các toán tử của C++ làm việc với các đốitượng của lớp. Xử lý này được gọi là nạp chồng toán tử (operator overloading).Các nguyên tắc cơ bản của nạp chồng toán tử−Lập trình viên có thể sử dụng các kiểu có sẵn và có thể định nghĩa các kiểu mới.−Các lập trình viên có thể sử dụng các toán tử với các kiểu do người dùng định nghĩa.−Các toán tử được nạp chồng bằng cách viết một định nghĩa hàm ngoại trừ tên hàm bây giờ trở•thành từ khóa operator theo sau bởi ký hiệu của toán tử được nạp chồng. Prototype của nó códạng như sau:type operator operator_symbol ( parameter_list );Các giới hạn−Phần lớn các toán tử của C++ có thể được nạp chồng. Các toán tử có thể được nạp chồng:−Các toán tử không thể được nạp chồng:−Không thể thay đổi số các toán hạng mà một toán tử yêu cầu: Nạp chồng các toán tử một ngôi•vẫn là các toán tử một ngôi; nạp chồng các toán tử hai ngôi vẫn là các toán tử hai ngôi..Nạp chồng các toán tử 2 ngôi−Các toán tử hai ngôi được nạp chồng trong hình sau:Bộ môn Công nghệ phần mềm−Một toán tử hai ngôi có thể được nạp chồng như là hàm thành viên không tĩnh với một tham số•hoặc như một hàm không thành viên với hai tham số.Nạp chồng các toán tử 1 ngôi−Các toán tử một ngôi được nạp chồng trong hình sau:−Một toán tử một ngôi của lớp được nạp chồng như một hàm thành viên không tĩnh với không có•tham số hoặc như một hàm không thành viên với một tham số; Tham số đó phải hoặc là một đốitượng lớp hoặc là một tham chiếu đến đối tượng lớp.Nạp chồng các toán tử đặc biệt•Toán tử []−Khi cài đặt các lớp vector hoặc chuỗi ký tự, cần phải truy cập đến từng phần tử của chúng, trong−ngôn ngữ C/C++ đã có toán tử [] để truy cập đến một phần tử của mảng.Đây là toán tử hai ngôi, có dạng a[b] và khi nạp chồng toán tử này thì hàm toán tử tương ứng•phải là thành viên của một lớp.Toán tử ()−Toán tử () được dùng để gọi hàm, toán tử này gồm hai toán hạng: toán hạng đầu tiên là tên hàm,−toán hạng thứ hai là danh sách các tham số của hàm.Toán tử này có dạng giống như toán tử [] và khi nạp chồng toán tử này thì hàm toán tử tương•ứng phải là thành viên của một lớp.Nạp chồng toán tử chuyển đổi kiểu−Một toán tử chuyển đổi kiểu có thể được sử dụng để chuyển đổi một đối tượng của một lớp−thành đối tượng của một lớp khác hoặc thành một đối tượng của một kiểu có sẵn. Toán tử chuyểnđổi kiểu như thế phải là hàm thành viên không tĩnh và không là hàm friend.Prototype của hàm thành viên này có cú pháp:•operator <data type> ();Nạp chồng toán tử new và delete−Hàm toán tử của toán tử new và delete có prototype như sau:Bộ môn Công nghệ phần mềm•void * operator new(size_t size);void operator delete(void * ptr);Trong đó tham số kiểu size_t được trình biên dịch hiểu là kích thước của kiểu dữ liệu được traocho toán tử new.Nạp chồng các toán tử chèn dòng−Ta có thể nạp chồng các toán tử chèn dòng > là một tham chiếu chỉ đến dòng xuất istream, tham số thứ hai là đối tượng.Một số ví dụ•Lớp StringXây dựng một lớp xử lý việc tạo và thao tác trên các chuỗi (string). C++ không cài sẵn kiểudữ liệu chuỗi. Nhưng C++ cho phép chúng ta thêm kiểu chuỗi như một lớp thông qua cơ chế nạpchồng.class String{private:char *Ptr; //Con tro tro den diem bat dau cua chuoiint Length; //Chieu dai chuoipublic:String(const char * = ""); //Constructor chuyen doiString(const String &); //Constructor sao chep~String();//Destructorconst String &operator=(const String &); //Phep ganString &operator+=(const String &);//Phep noiint operator!() const;//Kiem tra chuoi rongint operator==(const String &) const;int operator!=(const String &) const;int operator(const String &) const;int operator>=(const String &) const;int operator

Từ khóa » Toán Tử Istream