Trang 1 trên tổng số 2 12 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 17 kết quả

Đề tài: ostream& operator<<(ostream& os,const DT &D) có ý nghĩa gì?

  1. #1
    Ngày gia nhập
    10 2006
    Nơi ở
    In Your Bugs
    Bài viết
    823

    Unhappy ostream& operator<<(ostream& os,const DT &D) có ý nghĩa gì?

    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 !

  2. #2
    Ngày gia nhập
    01 2007
    Bài viết
    6

    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

  3. #3
    No Avatar
    Nhuan_Trang_Only_Love Khách

    Trích dẫn Nguyên bản được gửi bởi kidkid Xem bài viết
    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 !
    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!

  4. #4
    Ngày gia nhập
    01 2007
    Bài viết
    6

    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 :|

  5. #5
    Ngày gia nhập
    10 2006
    Nơi ở
    In Your Bugs
    Bài viết
    823

    à 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:
    1. class SoPhuc
    2. {
    3.     int sothuc,soao;
    4. public:
    5.     SoPhuc operator+(SoPhuc u);
    6. };

    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 đó .

  6. #6
    Ngày gia nhập
    10 2006
    Nơi ở
    In Your Bugs
    Bài viết
    823

    Mặc định ostream& operator<<(ostream& os,const DT &D) có ý nghĩa gì?

    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 ?

  7. #7
    Ngày gia nhập
    10 2007
    Bài viết
    1

    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

  8. #8
    Ngày gia nhập
    12 2007
    Bài viết
    224

    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 !
    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ư cout

    os << " - Các hệ số ";
    Tuy nhiên ở đây ta thắc mắc 2 chỗ in đỏ như sau :

    ostream& operator<<(ostream& os,const DT &D)
    {
    os << " - Các hệ số ";
    ........
    }
    Tại sao lại dùng tham chiếu tại 2 chỗ đó ?

    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:
    1. DT d1,d2,d3;
    2. cout<<d1<<d2<<d3; // ro rang o day ta da in ra 3 doi tuong d1 , d2 ,d3 trong cung mot cau lenh cout


    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ó .

  9. #9
    Ngày gia nhập
    03 2010
    Bài viết
    13

    Trích dẫn Nguyên bản được gửi bởi sieuphuong Xem bài viết
    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ư cout



    Tuy nhiên ở đây ta thắc mắc 2 chỗ in đỏ như sau :



    Tại sao lại dùng tham chiếu tại 2 chỗ đó ?

    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:
    1. DT d1,d2,d3;
    2. cout<<d1<<d2<<d3; // ro rang o day ta da in ra 3 doi tuong d1 , d2 ,d3 trong cung mot cau lenh cout


    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ó .
    Vậy còn dấu & ở cuối là sao anh ??

  10. #10
    Ngày gia nhập
    03 2010
    Bài viết
    13

    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 ???

Các đề tài tương tự

  1. giải thích cách sử dụng ostream và istream
    Gửi bởi danghieu233 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 9
    Bài viết cuối: 03-09-2012, 06:22 PM
  2. Chồng toán tử ostream &operator<< cơ chế chạy ntn?
    Gửi bởi DingPhonh trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 7
    Bài viết cuối: 01-04-2011, 12:39 PM
  3. Bài tập C++ Ostream &out_stream +static_cast
    Gửi bởi tianversion trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 10
    Bài viết cuối: 31-03-2011, 10:20 PM
  4. Kỹ thuật C++ istream, ostream trong C++ có tác dụng gì?
    Gửi bởi kahnle trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 3
    Bài viết cuối: 25-03-2011, 09:32 AM
  5. hỏi về ostream & operator
    Gửi bởi qhai_2009 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 1
    Bài viết cuối: 08-08-2010, 01:39 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn