vấn đề này mình cũng đã đang tìm hiểu , đọc đến chỗ đó của bác Ất khó hiểu quá, mọi người ai biết chỗ này chỉ giúp mình với
Trong sách của bác ẤT có đoạn này mà mình không rành lắm nên nhờ anh em giúp 1 tay :
ostream& operator<<(ostream& os,const DT &D)
{
os << " - Các hệ số ";
........
}
Bên cạch đó còn có cái thằng istream ... và is >>
kidkid chỉ hiểu đơn thuần rằng ostream& là một kiểu dữ liệu nào đó ? còn os là một phương thức có khả năng xuất ra màn hình như cout << vậy nhưng mà nó ra sao ? Và hiểu như thế nào cho đầy đủ thì lại nhờ anh em vậy !
vấn đề này mình cũng đã đang tìm hiểu , đọc đến chỗ đó của bác Ất khó hiểu quá, mọi người ai biết chỗ này chỉ giúp mình với
Cái này os bạn có thể thay là từ ji cũng được(miễn là không trùng với từ khoá).
Tức là ostream& operator<<(ostream& xuat,....).
Hoặc ostream& operator>>(ostream& nhap,....).
Khi tôi làm thì tôi hiểu nó như #define vậy(mang tính thay thế).
Tuy nhiên chỉ là hiểu như vậy thôi.Còn thì chưa rõ lắm!
thế cái operator ở đây nên hiểu ra sao vậy bạn ,mình cũng chưa rõ nên dùng cái này khi nào :|
à cái operator thì mình hiểu sơ sơ rằng nó là cách thức để định nghĩa chồng toán tử , cậu có thể đọc kĩ thêm trong sách , có cũng khá rõ tuy nhiên tớ ví dụ cho cậu thế này :
Giả sử tớ có cái class:
C++ Code:
class SoPhuc { int sothuc,soao; public: SoPhuc operator+(SoPhuc u); };
Bây giờ trong main tớ khai báo trế này :
SoPhuc x,y,z;
như vậy lúc này tớ có 3 số phức có kiểu như trên :
bây giờ tớ có thể tính z thông qua các giá trị của x,y thông qua câu lệnh:
z=x+y; //
+ ở đây sẽ được trình biên dịch dựa vào việc định nghĩa chồng toán tử của ta trong phương thức operator+ trên đó .
Uh ! Sao không có ai giúp đỡ thế này ! Mấy bro có vào mà , thấy trả lời anh em xôm tụ lắm mà sao không ghé nơi này vậy ta ?
Chẳng lẽ phải mở cái thư viện lên ngâm cứu sao ?
cái này em cũng đang đọc sách bác Ất thì không hiểu
nhưng được biết đó là phương thức toán tử, tức là toán thử được định nghĩa
còn sao nữa thì đang chờ để hỏi các bác :P
ostream là 1 lớp . Nó chính là lớp của đối tượng cout . Đối tượng dùng để xuất dòng tin ra màn hình console . os chính là một đối tượng thuộc lớp ostream , vì vậy nó cũng có khả năng xuất ra màn hình như coutkidkid chỉ hiểu đơn thuần rằng ostream& là một kiểu dữ liệu nào đó ? còn os là một phương thức có khả năng xuất ra màn hình như cout << vậy nhưng mà nó ra sao ? Và hiểu như thế nào cho đầy đủ thì lại nhờ anh em vậy !
Tuy nhiên ở đây ta thắc mắc 2 chỗ in đỏ như sau :os << " - Các hệ số ";
Tại sao lại dùng tham chiếu tại 2 chỗ đó ?ostream& operator<<(ostream& os,const DT &D)
{
os << " - Các hệ số ";
........
}
Trước hết ta xét dấu & thứ nhất trong kiểu trả về . Ở đây ta trả về 1 tham chiếu đến đối tượng os . Câu trả lời là do ta có thể sử dụng toán tử << nhiều lần trong một câu lệnh in ra màn hình . Nên bắt buộc kiểu trả về phải là một tham chiếu đến đối tượng os ( đối tượng in ra màn hình ) để có thể sử dụng lại trong một câu lệnh .
C++ Code:
DT d1,d2,d3;
Thứ 2 là dấu & nằm kế bên os . Trả lời : do ta cần tham chiếu đến chính xác đối tượng cout nên bắt buộc phải có dấu & ở đây . Chỉ đối tượng cout mới được C++ định nghĩa nó là một đối tượng thuộc lớp ostream nên ai muốn in ra cái gì trên màn hình phải dùng nó hoặc ít nhất là tham chiếu đến nó .
Bây giờ mình mới hiểu sơ sơ là toán tử >> (hay <<) cũng chỉ là một hàm bình thường.
Ví Dụ:
Khi ta gõ lệnh cin >>a , tức là ta đang gọi thực hiện hàm >> với 2 đối số là cin và a, kết quả trả về là cin
Không biết & cuối cùng có ý nghĩa gì ?? mấy bạn có thể giải thích giùm mình được không ???