2012-04-19 38 views
6

Tên đối số chức năng trong các khai báo (hầu hết nằm trong tệp tiêu đề) dường như bị bỏ qua hoàn toàn bởi trình biên dịch. Các lý do là gì để cho phép những điều sau đây được biên dịch bằng cách sử dụng phiên bản khai báo 1 hoặc 2?Tại sao các tên đối số hàm không quan trọng trong khai báo C++?


thực hiện

void A::doStuff(int numElements, float* data) 
{ 
    //stuff 
} 

khai - Phiên bản 1

class A 
{ 
public: 
    void doStuff(int numElements, float* data); 
} 

khai - Phiên bản 2

class A 
{ 
public: 
    void doStuff(int, float*); 
} 
+1

Không liên quan đến tiêu đề, sự khác biệt đó là tuyên bố. –

+0

Điểm tốt. Đã chỉnh sửa câu hỏi. Cảm ơn – learnvst

Trả lời

11

Trình biên dịch chỉ cần biết loại đối số mà phương thức yêu cầu. Nó không quan trọng đối với trình biên dịch như thế nào bạn gọi chúng.

Trình biên dịch cần phải biết loại đối số vì nhiều lý do:

  • Quyết định phương pháp để sử dụng nếu có một số phương pháp với tên cùng một phương pháp
  • Quyết định xem các thông số đầu vào có giá trị
  • Quyết định xem các thông số có cần phải được đúc
  • Quyết định cách tạo CODE để gọi phương thức và xử lý phản hồi

Tuy nhiên, tôi đề nghị sử dụng phiên bản tiêu đề đầu tiên. Nó giúp các nhà phát triển khác (và bản thân bạn) sử dụng các hàm và biết những tham số nào có ý nghĩa gì.

1

Lý do duy nhất tôi có thể nghĩ về phiên bản 1 là tốt hơn là khả năng đọc. Chúng được bỏ qua vì chúng không quan trọng đối với trình biên dịch.

5

Vì tên không ảnh hưởng đến bất kỳ thứ gì mà trình biên dịch thực hiện bên ngoài chức năng.

6

Tên tham số không phải là một phần của chữ ký hàm. Trừ khi bạn sử dụng chúng, bạn không cần cần để có tên ngay cả khi triển khai chức năng.

1

.. bởi vì khi tiêu đề được bao gồm trong các mô-đun khác, nó chỉ cần các loại để tạo mã chính xác. Tên ae thường hữu ích và thuận tiện, nhưng nopt hoàn toàn cần thiết.

Các vấn đề liên quan