Làm thế nào trình biên dịch có thể phân biệt được các hàm có cùng tên. Xếp chồng toán tử đang sử dụng các toán tử tích hợp để hoạt động trên các toán hạng khác nhau, tức là. chúng ta có thể định nghĩa tác động của các toán tử lên các đối tượng lớp. Ví dụ: giả sử chúng ta muốn thêm hai đối tượng thuộc lớp airtime và sau đó gán kết quả cho một đối tượng airtime khác.
Ví dụ 1: Viết chương trình cộng hai số phức nhập từ bàn phím bằng toán tử cộng. Bài tập về nhà 1: Xây dựng lớp đối tượng String có thể sử dụng phép cộng và nối nhiều chuỗi ký tự thông thường thành một chuỗi duy nhất. Để ghi đè một toán tử, chúng ta cần xác định một hàm xác định thao tác mà toán tử sẽ thực hiện.
Hàm ngăn xếp toán tử cũng giống như các hàm thông thường, ngoại trừ tên hàm là từ khóa operator kết hợp với toán tử: operatorX, trong đó X là toán tử. Lệnh gọi hàm quá tải toán tử có thể sử dụng cú pháp giống như hàm thông thường.
Chồng toán tử
- Chồng các toán tử hai ngôi 1. Chồng các toán tử số học
- Chồng các toán tử gán phức hợp
- Chồng các toán tử quan hệ
- Chồng các toán tử gán phức hợp
- Chồng các toán tử gán phức hợp (tiếp)
- Tại sao phải chồng toán tử?
- Chồng các toán tử hai ngôi I Chồng các toán tử một ngôi
- Chuyển đổi giữa các đối tượng và kiểu dữ liệu cơ bản
- Chuyển đổi giữa các lớp
- Chồng toán tử gán = và toán tử [ ]
- Chồng các toán tử một ngôi
- Chuyển đổi giữa các đối tượng và kiểu dữ liệu cơ bản
- Chuyển đổi giữa các đối tượng và kiểu dữ liệu cơ bản
Bài tập 2: Viết hàm thành viên xếp chồng toán tử so sánh nhỏ hơn (<) để so sánh hai đối tượng lớp airtime. Toán tử gán khác với toán tử nhị phân thông thường ở chỗ chúng sửa đổi đối tượng gọi chúng. Mục đích chính của toán tử gán là sửa đổi đối tượng, nhưng chúng cũng thường được sử dụng để trả về giá trị.
Bài tập 3: Xếp chồng toán tử gán += cho lớp airtime để có thể sử dụng nó để gán các đối tượng airtime cho nhau. Chuyển đổi giữa các đối tượng dữ liệu cơ bản và các kiểu dữ liệu. Chuyển đổi giữa các đối tượng và kiểu dữ liệu cơ bản và kiểu dữ liệu cơ bản.
Việc chuyển đổi các kiểu dữ liệu cơ bản thành các đối tượng được thực hiện bằng cách sử dụng hàm tạo một đối số. Việc chuyển đổi các đối tượng lớp thành các kiểu cơ bản được thực hiện bằng cách sử dụng hàm nạp chồng toán tử ép kiểu. Hàm ghi đè toán tử ép kiểu không có kiểu trả về, tên hàm bắt đầu bằng toán tử từ khóa, theo sau là khoảng trắng rồi đến tên loại.
Hàm nạp chồng toán tử ép kiểu được gọi tự động khi bạn gán một đối tượng cho một biến kiểu cơ sở hoặc khi bạn khởi tạo một biến kiểu cơ sở.
Chồng toán tử gán đơn giản =
Chúng ta có thể sử dụng toán tử gán để gán các đối tượng cho nhau mà không cần làm gì cả. Tuy nhiên, khi đối tượng sử dụng con trỏ hoặc làm những việc như đếm, đánh số chính nó,… Ngăn xếp toán tử gán và hàm tạo sao chép đều sao chép dữ liệu từ đối tượng này sang đối tượng khác.
Điểm khác biệt duy nhất là hàm tạo sao chép tạo một đối tượng mới và sau đó sao chép dữ liệu từ đối tượng khác sang đối tượng mới này, trong khi hàm nạp chồng của toán tử gán chỉ sao chép dữ liệu vào đối tượng hiện có.
Chồng toán tử gán đơn giản
Chồng toán tử chỉ số []
- Chồng toán tử nhập/ xuất - Hàm bạn
- Giới thiệu về hàm bạn
- Những thuận lợi khi dùng hàm bạn
- Hàm bạn phá vỡ nguyên tắc bao gói thông tin
Nếu khai báo kiểu trả về là một tham chiếu thì việc trả về đối tượng sẽ không tạo ra đối tượng trung gian.
Giới thiệu về hàm bạn
Tuy nhiên, nó nên được để ở chế độ công khai vì nó là giao diện của lớp, điều đó có nghĩa là bất kỳ người dùng nào của lớp đều có thể gọi hàm của bạn. Theo nguyên tắc bao bọc và ẩn dữ liệu trong LTD, các hàm không phải là thành viên của lớp không thể truy cập dữ liệu riêng tư và được bảo vệ của một đối tượng.
Những thuận lợi khi dùng hàm bạn
Hàm bạn bè cho phép sử dụng ký hiệu hàm: đôi khi hàm bạn bè đưa ra cú pháp gọi hàm rõ ràng hơn hàm thành viên. Ví dụ: giả sử chúng ta muốn một hàm bình phương một đối tượng obj, thì sqr(obj) rõ ràng hơn obj.sqr(). Hàm của bạn giống như cầu nối giữa các lớp: Giả sử chúng ta có một hàm tính toán trên các đối tượng của hai lớp khác nhau.
Hàm này có thể lấy các đối tượng của hai lớp này làm đối số và tính toán trên dữ liệu riêng tư của chúng. Làm cách nào chúng ta có thể sử dụng trực tiếp dữ liệu riêng tư của hai lớp nếu chúng không liên quan gì đến nhau.
Hàm bạn phá vỡ nguyên tắc bao gói thông tin
Điểm mấu chốt: Luôn sử dụng chức năng thành viên trừ khi có lý do thuyết phục để sử dụng chức năng bạn bè.
Các loại biến
- Sự khác nhau giữa khai báo và định nghĩa
Chức năng của khai báo là cung cấp thông tin cho trình biên dịch, nó không yêu cầu trình biên dịch phải làm bất cứ điều gì. Trong một số trường hợp, các khai báo cũng yêu cầu trình biên dịch cấp phát bộ nhớ, chẳng hạn như khai báo biến. Chúng được gọi là biến tự động vì chúng được tạo tự động khi hàm được gọi và bị hủy khi hàm thoát.
Do đó, một biến được khai báo trong một hàm khác hoàn toàn với một biến được khai báo trong một hàm khác. Theo mặc định, các biến tự động không được khởi tạo nên khi được tạo, chúng sẽ có giá trị vô nghĩa. Để khai báo một biến thanh ghi, chúng ta sử dụng từ khóa register trước khi khai báo một biến thông thường.
Biến tự động có thể được khai báo ở bất kỳ đâu trong hàm hoặc trong khối mã. Các biến được khai báo trong một khối chỉ có phạm vi trong khối đó. Biến ngoài là các biến được khai báo bên ngoài tất cả các hàm và lớp.
Các biến bên ngoài có phạm vi từ nơi chúng được khai báo đến cuối tệp khai báo chúng. Thời gian tồn tại của các biến ngoài là thời gian tồn tại của chương trình, tức là khi chương trình kết thúc, các biến ngoài sẽ bị hủy. Không giống như các biến tự động, các biến ngoài được tự động khởi tạo về 0 nếu chúng ta không khởi tạo chúng.
Nếu chương trình được chia thành nhiều tệp, các biến ngoài chỉ có thể được sử dụng trong tệp khai báo chúng, không được sử dụng trong các tệp khác. Để các file khác sử dụng biến ngoài được xác định trong file, chúng ta cần khai báo biến đó bằng từ khóa external. Để làm cho các biến bên ngoài chỉ có thể truy cập được trong tệp khai báo chúng chứ không phải từ các tệp khác, chúng tôi sử dụng từ khóa tĩnh.
Vì các biến ngoài nằm rải rác khắp nơi trong chương trình nên chúng ta phải chú ý kiểm soát tên biến để không có hai biến nào có cùng tên. e) Các biến tĩnh cục bộ. Biến tĩnh cục bộ được sử dụng khi chúng ta muốn lưu trữ giá trị của biến được khai báo trong hàm giữa các lệnh gọi hàm.
Bài 2. Viết chương trình sử dụng đối tượng ngăn xếp để đưa ra màn hình số nhị phân của
Bài 3. Viết chương trình sử dụng đối tượng ngăn xếp để tìm và đưa ra màn hình tất cả các