2011-01-14 97 views
25

C++中是否有类似Java的注释?C++中类似Java的注释

例如,@Override注释标记一个函数,它会覆盖另一个函数,如果它不会,它会在编译时产生错误。

我在C++中寻找这样的东西。

回答

8

C++0x将具有此功能,您可以在其中明确指定成员函数是否意图覆盖基类的函数,使用由编译器生成的默认实现等等。

+2

既然C++ 11已经发布了,那么是否有任何描述此功能的文档? – 2012-10-05 20:36:28

+1

另外,您指的是哪个功能? – 2012-10-05 20:44:26

1

有C++ 0x,它有覆盖'注释'。或者,如果你想实现更多的Java的“接口”之类代码的错误如果不实现方法,你可以使用一个抽象类:

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

class Extended : public Base { 
public: 

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

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

这将导致如果一个编译器错误不要在基类中重写foo。但是,这个问题是基类不能拥有它自己的实现。

0

此语言中没有任何内容。你所希望的最好的是编译器特定的选项。我将首先检查编译器的“编译指示”文档。

16

C++ 11为“通用属性”提供了支持,它可以被看作是Java注释的超集,因为它们可以仅用于变量/函数,也可以用于语句。但是C++ 11仅为通用属性定义了语法,而不是由用户定义它们。

本文给出了广义的属性很好的概述:http://www.codesynthesis.com/~boris/blog/2012/04/18/cxx11-generalized-attributes/

GCC支持从4.8版本的功能,根据http://gcc.gnu.org/projects/cxx0x.html

要实现对用户定义的属性支持,编译器插件是有希望的,特别是基于高级语言集成,如https://fedorahosted.org/gcc-python-plugin/