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

Đề tài: [C++] Không hiểu const để làm gì

  1. #1
    Ngày gia nhập
    09 2006
    Bài viết
    20

    Mặc định [C++] Không hiểu const để làm gì

    cho đoạn mã sau:
    lớp đa thức
    class CDaThuc
    {
    private:
    int n;//bac da thuc
    double *a;//cac he so cua da thuc;
    public:
    friend ostream& operator<<(ostream &,const CDaThuc &);
    friend istream& operator>>(istream &,CDaThuc &);
    DT operator+(const DT &d2);
    DT operator-(DT d2);
    double operator^(const double &x );
    };

    cho mình hỏi tại sao lại phải có const ở phương thức <<. + mà không có ở>>,-.
    và tại sao phải có dâu tham chiếu & ở + - và <<, không có cũng đuọc mà.

    làm ơn trả lòi giùm mình

  2. #2
    Ngày gia nhập
    08 2006
    Bài viết
    59

    [quote]tại sao lại phải có const ở phương thức <<. + mà không có ở>>,-.[/
    quote]

    => tui nghĩ như vầy: bên trong << và + mình sẽ không thay đổi giá trị của tham số => thêm const (để lỡ mình có quên mà thay đổi giá trị của tham số bên trong << và + thì trình biên dịch sẽ "nhắc nhở" mình"); còn bên trong >> thì mình sẽ thay đổi giá trị của tham số => không thể xài const (nếu mình xài thì khi mình thay đổi giá trị của tham số bên trong >> thì trình biên dịch sẽ "nhắc nhở" mình ngay). Đối với -: tui nghĩ nó phải tương tự như + chớ ?

    tại sao phải có dấu tham chiếu & ở + - và <<, không có cũng đuọc mà
    => có 2 trường hợp (không biết tui còn sót cái nào không) mình muốn xài & ở tham số (còn được gọi là truyền bằng tham chiếu; với C thì mình phải xài con trỏ):

    a) mình muốn thay đổi giá trị của tham số bên trong hàm / thủ tục và sự thay đổi này vẫn có hiệu lực khi thoát khỏi hàm. Trường hợp này mình phải truyền bằng địa chỉ (con trỏ hoặc tham chiếu)

    b) mình muốn tăng tốc độ truyền tham số: nếu tham số là 1 object lớn thì truyền bằng tham chiếu (chỉ cần copy địa chỉ) sẽ nhanh hơn là truyền bằng giá trị (phải copy nguyên object). Trường hợp này thì tùy chọn (nếu không truyền bằng tham chiếu mà truyền bằng giá trị thì chậm, nhưng không sai). Đặc biệt: kiểu mảng luôn được truyền bằng tham chiếu bởi trình biên dịch (mình không phải lo)

    (có gì sai sót mong được góp ý, xin cám ơn)

    -thân

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

  1. Lập trình C++0x const: ý nghĩa của const trong khai báo function
    Gửi bởi quano1 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 13
    Bài viết cuối: 06-08-2013, 07:24 AM
  2. Tìm hiểu về từ khóa const - const với nhiều ý nghĩa
    Gửi bởi langman trong diễn đàn Tutorials và Thủ thuật Visual C++
    Trả lời: 1
    Bài viết cuối: 19-12-2011, 12:00 PM
  3. lỗi cannot convert `const char*' to `const WCHAR*' for argument khi dùng autoit với c++
    Gửi bởi morongtraitim88 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 4
    Bài viết cuối: 03-06-2011, 08:54 PM
  4. const A* const method(const A* const) const;//const thứ 2
    Gửi bởi david8xvn trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 18
    Bài viết cuối: 23-09-2010, 12:36 AM
  5. [VC] Cannot convert parameter 1 from 'const char [23]' to 'const wchar_t *'
    Gửi bởi lychailon trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 4
    Bài viết cuối: 09-12-2006, 11:22 AM

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