Các tốn tử đã đa năng hóa << và >> có thể được theo dạng nối vào nhau. Ví dụ 8.5: Nối các tốn tử đã đa năng hóa
1: //Chương trình 8.5: Nối tốn tử << đã đa năng hóa. 2: #include <iostream.h>
3:
4: int main() 5: {
Giáo trình mơn Lập trình hướng đối tượng Trang 147 6: cout<<"47 plus 53 is "<< (47+53)<<endl;
7: return 0; 8: }
Chúng ta chạy ví dụ 8.5, kết quả ở hình 8.7
Hình 8.7: Kết quả của ví dụ 8.5 Nhiều chèn dịng ở dịng 6 trong ví dụ 8.5 được thực thi nếu có thể viết:
(((cout<<"47 plus 53 is ")<< (47+53))<<endl);
nghĩa là << liên kết từ trái qua phải. Loại liên kết của các tốn tử chèn dịng được phép bởi vì tốn tử đa năng hóa << trả về một tham chiếu tới đối tượng tốn hạng bên trái của nó, nghĩa là cout. Vì thế biểu thức
đặt trong ngoặc bên cực trái:
(cout<<"47 plus 53 is ")
xuất ra một chuỗi đã chỉ định và trả về một tham chiếu tới cout. Điều này cho phép biểu thức đặt trong ngoặc ở giữa được ước lượng:
(cout<< (47+53))
xuất giá trị nguyên 100 và trả về một tham chiếu tới cout. Sau đó biểu thức đặt trong ngoặc bên cực phải
được ước lượng:
cout<<endl;
xuất một newline, flush cout và trả về một tham chiếu tới cout. Trả về cuối cùng này không được sử
dụng.
8.3.3 Xuất các biến kiểu char *:
Trong nhập/xuất kiểu C, thật cần thiết cho lập trình viên để cung cấp thơng tin kiểu. C++ xác định các kiểu dữ liệu một cách tự động – một cải tiến hay hơn C. Đôi khi điều này là một trở ngại. Chẳng hạn, chúng ta biết rằng một chuỗi ký tự là kiểu char *. Mục đích của chúng ta in giá trị của con trỏ đó, nghĩa là địa chỉ bộ nhớ của ký tự đầu tiên của chuỗi đó. Nhưng tốn tử << đã được đa năng hóa để in dữ liệu của kiểu char * như là chuỗi kết thúc ký tự null. Giải pháp là ép con trỏ thành kiểu void *.
Ví dụ 8.6: In địa chỉ lưu trong một biến kiểu char * Chúng ta chạy ví dụ 8.6, kết quả ở hình 8.8
Hình 8.8: Kết quả của ví dụ 8.6
III.3. Xuất ký tự với hàm thành viên put(); Nối với nhau hàm put()
Hàm thành viên put() của lớp ostream xuất một ký tự có dạng :
ostream& put(char ch);
Chẳng hạn:
cout.put(‘A’);
148
cout.put(‘A’).put(‘\n’);
Hàm put() cũng có thể gọi với một biểu thức có giá trị là mã ASCII như: cout.put(65);