2013-08-16 95 views
5

Có thể ai đó vui lòng phân biệt các thuộc tính và phương thức của lớp cho C++ không? Tôi đã được ấn tượng rằng thuộc tính có nghĩa là bất kỳ biến thành viên, và phương pháp có nghĩa là bất kỳ chức năng thành viên.C++ Có đúng không khi gọi các biến thành viên lớp là "thuộc tính"?

Cảm ơn

+1

Thuộc tính = phần nào được sử dụng nhưng thuật ngữ không chính thức. – Jon

+1

Tôi sẽ không sử dụng thuật ngữ 'thuộc tính' trong C++ theo cách đó, vì tên' thuộc tính' bây giờ đề cập đến một phần hoàn toàn không liên quan 100% của ngôn ngữ. –

+1

Tôi không nghĩ rằng nó không chính xác, như trong "người ta không thể sử dụng những từ này", hoặc như trong "họ không giữ ý nghĩa đó trong C + +". Tuy nhiên, từ _attribute_ đang được sử dụng từ C++ 11 cho [cái gì khác] (http://en.cppreference.com/w/cpp/language/attributes). Miễn là bạn đủ rõ ràng trong việc sử dụng thuật ngữ của mình và bạn không ở quá xa các thuật ngữ hiện có, điều đó không phải là vấn đề. – didierc

Trả lời

6

Xác định "đúng".

Đề cập đến các thành viên dữ liệu và các chức năng thành viên là "thuộc tính/thuộc tính" và "phương pháp" tương ứng, là thông lệ phổ biến - đó là từ ngữ OO chung. ("Thuộc tính" được sử dụng trong C++ cho something else, mặc dù, vì vậy đây rất có thể là một nguồn gây nhầm lẫn.)

C++ chuẩn, tuy nhiên, không không sử dụng những thuật ngữ này (ngoài các thuộc tính tất nhiên, như đã giải thích ở trên). Nếu bạn không muốn mạo hiểm bất cứ điều gì và luôn luôn là chính xác, sử dụng "thành viên dữ liệu" và "chức năng thành viên".

Nhưng nếu bạn chỉ muốn giải thích C++ cho một lập trình viên Java, bạn có thể thoát khỏi "thuộc tính" và "phương thức" ngay từ đầu.

+3

Tôi sẽ gọi nó là ** không chính xác **. Đây không phải là trường hợp giống như * phương thức * và * hàm thành viên *, vì có một khái niệm được đặt tên * thuộc tính * trong tiêu chuẩn C++. Tức là, nếu bạn nói về * phương thức * trong C++, mọi người biết rằng * phương thức * không có nghĩa trong C++ và chúng sẽ mặc định theo thuật ngữ OO.Nếu bạn sử dụng * attribute * trong một cuộc trò chuyện C++, nhiều người sẽ giải thích rằng bạn đang nói về * thuộc tính * theo tiêu chuẩn. –

+0

@ DavidRodríguez-dribeas Vì vậy, về cơ bản, [this] (http://stackoverflow.com/questions/18282330/c-is-it-correct-to-call-class-member-variables-attributes/18282421?noredirect=1 # comment26820325_18282330). (Một lần nữa, tôi không gợi ý rằng việc sử dụng các thuật ngữ chung sẽ vượt trội so với những điều khoản trong tiêu chuẩn, có lẽ tôi nên nhấn mạnh điều này tốt hơn.) –

+0

Vâng, tôi đã không đọc nhận xét đó. –

0

Thuộc tính lớp học sẽ chuyển thành thành viên. Một phương thức không giống như một hàm thành viên nói chung. Nhưng "Trong lập trình hướng đối tượng, một phương thức là một chương trình con (hoặc thủ tục) liên kết với một lớp." - Wikipedia.

+3

Một phương pháp luôn được liên kết với một lớp (mặc dù trong C++ thì thông dụng hơn là sử dụng hàm thành viên của từ). –

+0

Bạn nói đúng nếu chúng tôi nói bằng OO. –

+0

@ Pierre-AntoineLaFayette: Bạn có biết "nói" (trong ngữ cảnh của các ngôn ngữ compsci) nơi "phương pháp" có nghĩa là cái gì khác không? –

0

Nói cách chung, một thuộc tính mô tả một cái gì đó, "Một trong những thuộc tính của chiếc xe này là nó khá dài", hoặc "một trong những thuộc tính của gấu trúc khổng lồ là màu đen và trắng nổi bật".

Tôi XML, các thuộc tính được sử dụng để thêm thông tin phụ trong một thẻ, ví dụ <species id=3212>Ailuropoda melanoleuca<common_name>Giant Panda</common_name></species> - id là một thuộc tính, Ailuropoda melanoleuca là một giá trị, common_name một thẻ trong species.

Nhưng tôi gọi các biến trong lớp "biến thành viên" và các hàm trong lớp "hàm thành viên" hoặc "phương thức".

+0

true, "thuộc tính", thường được liên kết bằng tiếng Anh với "đặc tính" hoặc "đặc điểm" (một từ khác có ý nghĩa cụ thể trong C++). – didierc

2

Tôi sẽ không làm điều đó. Trong khi nó có thể được hiểu trong bối cảnh chung của OO, nó sẽ gây nhầm lẫn trong C++ là thuộc tính có định nghĩa chính xác trong tiêu chuẩn, không phải là của thành viên dữ liệu.

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