Doxygen从C ++代码生成的一些UML风格的类图对于可见性限定符具有'*',并且另外一些这样的成员是重复的,例如,在这个模拟的例子中使用foo()和fred():
public: virtual void foo() = 0;
protected: virtual void bar() = 0;
public: virtual void fred() = 0;
输出可能是:
+ foo()
# bar()
* foo()
* fred()
所以foo()显示为public和'*',fred()就像'*'一样。这似乎与其他语言功能无关,例如虚拟,纯粹,模板化派生或重载,或继承定义或返回类型。
'*'能见度表示什么?
[使用Doxygen版本1.8.13,撰写时的当前版本]
答案 0 :(得分:0)
TLDR :它是成员分组机制的工件,并不会传达任何语言信息,即它不是UML的扩展。< / p>
详细信息:特别是&#39; *&#39;是从DotNode::writeBox()
枚举成员组excerpted from here生成的:
MemberGroupSDict::Iterator mgdi(*m_classDef->memberGroupSDict);
MemberGroup *mg;
for (mgdi.toFirst();(mg=mgdi.current());++mgdi)
{
if (mg->members())
{
writeBoxMemberList(t,'*',*mg->members(),m_classDef);
}
}
member groups行为的Doxygen手册说明同时指出了///@{
和{{1}内的自动分组(&#34;在类型和保护级别上将事物分组在一起&#34;)分组注释。简短的实验表明,通过///@}
分组注释或明确命名自动组会导致成员被添加为一个组,因此双重列出&#39; *&#39;能见度。例如,此类生成后续图表:
///@name
它是一个令人尊敬的特征(从2004年开始),看似无条件(至少对代码进行简要检查并没有表明任何控制机制超出了#34; UML_LOOK = NO&#34; ,并且可以安全地忽略。