Announcement

Collapse
No announcement yet.

Giúp mình với [HÀM]!!

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • [C++] Giúp mình với [HÀM]!!

    "tsmd = tham số mặc định"
    Cho mình hỏi tại sao trong hàm thì các tsmd phải truyền dồn sang phải? Và một vấn đề liên quan khác nữa là nếu tsmd nào "thường" xảy ra hơn thì đặt "sau" tsmd còn lại?
    VD như:
    void ABC(int a, int b, int c = 5, int d = 9);
    nếu c thường xảy ra hơn thì nên khai báo:
    void ABC(int a, int b, int d = 9, int c = 5);

  • #2
    Nếu khai báo sau được chấp nhận
    PHP Code:
    int dummy(int a 5int b 9int c
    thì lời gọi hàm
    PHP Code:
    dummy(6,7
    sẽ phải hiểu thế nào đây em ?

    Quy ước dồn tham số mặc định về một bên để loại trừ nhập nhằng trong ngôn ngữ.

    Comment


    • #3
      Giả sử bạn được phép khai báo
      void ABC(int a=5, int b, int c=10)
      Vậy khi bạn gọi ABC(3, 2) thì theo bạn ở đây biến nào (a hay c) sẽ lấy giá trị mặc định? Rõ ràng nếu a được khi báo là tsmd mà nằm ở vị trí đó thì chắc chắn bạn không thể nào gọi hàm được. Cho nên quy định đặt các tsmd sang phải thì sẽ giúp compiler biết được khi bạn gọi thì tham số nào là mặc định. VD: void ABC(int a, int b=5, int c=10) thì khi bạn gọi ABC(3, 2), ta chỉ có 1 cách suy luận duy nhất ở đây đó là c sẽ được mặc định giá trị 10.

      Khi c thường xảy ra hơn thì có nghĩa là trong đa số các lần gọi hàm thì c đều mang giá trị 5, như vậy việc đặt c cuối cùng sẽ rút gọn được lời gọi hàm vì chỉ cần chỉ định giá trị cho các biến trước nó mà thôi).
      Chưa....

      Comment

      LHQC

      Collapse
      Working...
      X