2011-01-14 42 views
25

Có điều gì đó giống như chú thích của Java trong C++ không?Chú thích giống Java trong C++

Ví dụ: chú thích @Override đánh dấu chức năng ghi đè lên một hàm khác và nếu không, hàm sẽ báo lỗi vào thời gian biên dịch.

Tôi đang tìm một thứ như thế này trong C++.

Trả lời

8

C++0x sẽ có tính năng này, nơi bạn có thể chỉ định rõ ràng chức năng thành viên có nghĩa là ghi đè chức năng của lớp cơ sở hay không, sử dụng cài đặt mặc định do trình biên dịch tạo và nhiều tính năng khác.

+2

Bây giờ C++ 11 đã được phát hành, có tài liệu nào mô tả tính năng này không? –

+1

Ngoài ra, bạn đang đề cập đến tính năng nào? –

+0

Chỉ cần nhấp vào liên kết C++ 0x ở trên, nó sẽ đưa bạn chính xác đến phần đó trong tài liệu wikipedia. – Ruben

1

Có C++ 0x, có ghi chú 'ghi đè'. Hoặc, nếu bạn muốn đạt được nhiều hơn của "giao diện" Java như-mã lỗi nếu bạn không thực hiện phương pháp này, bạn có thể sử dụng một lớp trừu tượng:

class Base { 
public: 
    virtual void foo() = 0; 
}; 

class Extended : public Base { 
public: 

    void foo2() { 
     cout << "hi" << endl; 
}; 

int main() { 
    Extended e; 
    e.foo(); 
} 

này sẽ gây ra một lỗi biên dịch nếu bạn không ghi đè lên foo trong lớp cơ sở. Vấn đề, tuy nhiên, là lớp cơ sở không thể có thực hiện riêng của nó.

0

Không có ngôn ngữ nào cho ngôn ngữ này. Điều tốt nhất bạn có thể hy vọng là một tùy chọn trình biên dịch cụ thể. Tôi sẽ bắt đầu bằng cách kiểm tra tài liệu cho "pragma" cho trình biên dịch của bạn.

16

C++ 11 cung cấp hỗ trợ cho "các thuộc tính tổng quát", có thể được xem như là các chú thích Java, vì chúng có thể được áp dụng chỉ cho các biến/hàm, mà còn cho các câu lệnh. Nhưng C++ 11 chỉ định nghĩa cú pháp cho các thuộc tính tổng quát, không có nghĩa là người dùng định nghĩa chúng.

Bài viết này cung cấp cho cái nhìn tổng quan tốt của các thuộc tính tổng quát: http://www.codesynthesis.com/~boris/blog/2012/04/18/cxx11-generalized-attributes/

GCC hỗ trợ tính năng này từ phiên bản 4.8, theo http://gcc.gnu.org/projects/cxx0x.html

Thực hiện hỗ trợ cho các thuộc tính người dùng định nghĩa, các plugin trình biên dịch là đầy hứa hẹn, đặc biệt là dựa trên tích hợp ngôn ngữ cấp cao, như https://fedorahosted.org/gcc-python-plugin/

+0

đó là điều gần nhất với chú thích tôi đã thấy cho đến nay! Cảm ơn câu trả lời hữu ích này – bquenin

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