Từ 1 tới 3 trên tổng số 3 kết quả

Đề tài: Hàm định nghĩa toán tử >> và << cho đối tượng

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

    Mặc định Hàm định nghĩa toán tử >> và << cho đối tượng

    Em có một đoạn code ngắn như sau, đơn giản chỉ là định nghĩa toán tử >> để có thể dùng cin nhập các thuộc tính cho đối tượng p (là 1 đa thức) rồi in ra đa thức đó (1 phần của 1 bài toán lớn). Nhưng ko hiểu sao ko tài nào in đc (chương trình có chạy nhưng mà ko đúng)

    C++ Code:
    1. #include <iostream.h>
    2. #include <conio.h>
    3. using namespace std;
    4. class DT
    5. {
    6.     int n;
    7.     int a[20];
    8.     public:
    9.         friend istream& operator>>(istream& is, DT d);
    10.         void insl();
    11. };
    12. istream& operator>>(istream& is, DT d)
    13. {
    14.     cout<<"Bac cua da thuc: "; is>>d.n;
    15.     cout<<"\nCac he so:";
    16.     for(int i=0;i<=d.n;i++)
    17.     {
    18.         cout<<"\na"<<i<<"="; is>>d.a[i];
    19.     }
    20.     return is;
    21. }
    22.  
    23. void DT::insl()
    24. {
    25.     cout<<n<<"\n";        
    26.     for(int i=0;i<n;i++)        
    27.         cout<<a[i]<<" ";
    28. }
    29.  
    30. main()
    31. {
    32.     DT p;
    33.     cout<<"Nhap da thuc P:\n"; cin>>p;
    34.     p.insl();
    35.     getch();
    36. }

    Ai giải thích hộ em đoạn định nghĩa toán tử nhập thì tốt, chưa hiểu đối tượng is là cái j, tại sao lại thuộc istream&, istream& là cái j mà trong phép định nghĩa toán tử lại coi nó như một đối tượng. Lằng nhằng quá
    welcome to http://fotech.org
    bắt đầu với C/C++

  2. #2
    Ngày gia nhập
    12 2006
    Nơi ở
    US
    Bài viết
    1,917

    PHP Code:
    #include <iostream>
    #include <fstream>
    using std::istream;
    using namespace std;
    class 
    DT
    {
        
    int n;
        
    int a[20];
        public:
            
    friend istreamoperator>>(istreamisDT &);
            
    void insl();
    };
    istreamoperator>>(istreamisDT &d)
    {
        
    cout<<"Bac cua da thuc: "is>>d.n;
        
    cout<<"\nCac he so:";
        for(
    int i=0;i<=d.n;i++)
        {
            
    cout<<"\na"<<i<<"="is>>d.a[i];
        }
        return 
    is;
    }

    void DT::insl()
    {
        
    cout<<n<<"\n";        
        for(
    int i=0;i<n;i++)        
            
    cout<<a[i]<<" ";
    }

    int main()
    {
        
    DT p;
        
    cout<<"Nhap da thuc P:\n"cin>>p;
        
    p.insl();
      
        
    system("pause");

    Mình đã sữa lại cho nó chạy được, còn phần giải thích thì có lẽ mình sẽ post sau, bạn xem lại nhé !

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

    định nghĩa toán tử nhập xuất trong c++

    àh là do C++ cho phép người lập trình có khả năng mở rộng các toán tử ấy mà !
    toán tử mở rộng được mở đầu bằng từ khóa operator bạn có thể mở rộng và định nghĩa lại hầu hết tất cả các toán tử + , - , * , / , < , > , != , == , <= , >=
    ,<<, >> ..

    còn Is mà bạn hỏi đó chỉ là 1 lớp stream thui bạn có thể khai báo cái này bằng bất cứ từ gì mà bạn nghĩ ra có điều là nên gợi nhớ vậy thôi chứ ko có gì hết !
    bạn có thể để is là tên bạn cũng chẳng sao !

    mình chỉ biết vậy thôi !
    Tình Này Mãi Chao Về Em ......http://forums.congdongcviet.com/signaturepics/sigpic16224_1.gif

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

  1. Liên thông trung cấp nghề,cao đẳng nghề lên đại học chính quy 2012
    Gửi bởi cafetrungnguyen trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 0
    Bài viết cuối: 31-07-2012, 02:03 PM
  2. Trả lời: 0
    Bài viết cuối: 02-08-2011, 03:26 PM
  3. Nhập ký tự đầu tiên của một nghề sẽ xuất ra nghề đó bằng việc sử dụng enum?
    Gửi bởi sasadudu trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 5
    Bài viết cuối: 05-03-2011, 09:25 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