首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如果子类没有自己提供,doxygen会使用基类docs吗?

如果子类没有自己提供文档注释,Doxygen会使用基类的文档注释。Doxygen是一种用于生成软件文档的工具,它可以从源代码中提取注释并生成各种格式的文档,包括HTML、PDF和RTF等。在面向对象的编程中,子类可以继承基类的属性和方法,包括文档注释。如果子类没有为继承的属性或方法提供自己的文档注释,Doxygen会使用基类的文档注释作为默认值。

这种行为有助于减少重复工作,特别是当基类的文档注释已经很详细时。通过继承基类的文档注释,子类可以继承基类的功能和描述,同时可以在需要的情况下进行修改或补充。这样可以提高代码的可读性和维护性。

在使用Doxygen生成文档时,可以通过配置选项来控制是否继承基类的文档注释。如果希望子类完全使用自己的文档注释,可以在配置文件中设置相应的选项。另外,Doxygen还提供了一些标记和指令,可以用于在子类中引用基类的文档注释或添加额外的说明。

对于这个问题,腾讯云没有直接相关的产品或服务,因此无法提供腾讯云相关产品和产品介绍链接地址。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

NumPy 1.26 中文文档(五十三)

阅读文档 技术写作领域的领先组织Write the Docs举办会议,提供学习资源,并运营一个 Slack 频道。...更多贡献内容 如果英语不是您的母语,或者只能提供初稿,不要担心。开源是一个社区的努力。尽力而为 - 我们帮助解决问题的。...如果要添加的头文件所在路径(2 层深度)没有配置文件,就需要创建一个新的配置文件。 子配置文件可以接受任何 Doxygen 配置选项,但不应覆盖或重新初始化任何配置选项,而是只使用连接运算符“+=”。...如果您想添加的头文件所在的路径中没有配置文件,您需要创建一个新的配置文件。 子配置文件可以接受Doxygen的任何配置选项,但不会覆盖或重新初始化任何配置选项,只使用连接操作符“+=”。...文档阅读 技术文档撰写领域的领先组织Write the Docs举办会议,提供学习资源,并管理一个 Slack 频道。

11010

【C++】继承

我们通过调式也可以观察到: 那这就体现了复用: 子类Student复用了父Person的成员(包括成员变量和成员函数),如果没有继承,那这些成员就需要我们自己去定义。...即实际中最常用的继承关系其实是这一块 所以后面如果我们没有特别说明,讨论的就是公有继承下的情况。 2. 和派生对象的赋值转换 首先我们来看这样一个问题: 大家看这里y能赋给x?...(在子类成员函数中,可以使用 ::成员 显示访问)。 我们继续,刚才是子类和父中出现同名的成员变量,那如果是出现同名的成员函数呢?...所以,我们要这样写 所以,这里我们就可以认为必须分开处理,子类的构造函数即使我们不写,默认生成构造函数的在初始化从父继承下来的成员时也自动去调父的构造函数;如果我们自己实现了子类的构造函数...那如果我们写了构造,但不去处理从父继承下来的成员呢? 我们不手动去调,在初始化列表还是自动去调父的默认构造。 那如果没有默认构造呢?

13610
  • 面向 C++ 的现代 CMake 教程(四)

    大多数包管理器都知道 Valgrind 并且可以轻松地在您的操作系统上安装它(如果使用的是 Linux,可能已经安装了)。无论如何,官方网站提供了源代码,所以您可以自己构建它。...如果你的编辑器没有这个选项,你仍然可以通过使用第三方报告生成器获得更清晰的错误视图。...花在添加文档上的时间是值得的,特别是如果您发现您或您的团队成员在理解应用程序中的复杂关系时遇到困难。 您可能担心将 Doxygen 添加到没有从开始就使用文档生成的较大项目中会很困难。...如果我们不这样做,将使用project()命令中提供的版本(如果您的项目没有指定,请期待一个错误)。...使用 CPack 进行打包 从源代码构建项目有其优点,但它可能需要很长时间并引入很多复杂性。这并不是终端用户所期望的最佳体验,尤其是如果他们自己不是开发者的话。

    59600

    Python 继承

    () 两种方式不要混用 如果使用 当前子类名 调用方法,形成递归调用,出现死循环 1.3 父的 私有属性 和 私有方法 子类对象 不能 在自己的方法内部,直接 访问 父的 私有属性 或 私有方法...多继承 概念 子类 可以拥有 多个父,并且具有 所有父 的 属性 和 方法 例如:孩子 继承自己 父亲 和 母亲 的 特性 ? 语法 class 子类名(父名1, 父名2...)...object 是 Python 为所有对象提供提供有一些内置的属性和方法,可以使用 dir 函数查看 新式:以 object 为,推荐使用 经典:不以 object 为...,不推荐使用 在 Python 3.x 中定义时,如果没有指定父 默认使用 object 作为该类的 —— Python 3.x 中定义的都是 新式 在 Python 2.x 中定义时...,如果没有指定父,则不会以 object 作为 新式 和 经典 在多继承时 —— 影响到方法的搜索顺序 为了保证编写的代码能够同时在 Python 2.x 和 Python 3.x

    67550

    clang 源码导读(3): clang driver 参数解析

    流程进行分享 为了控制 clang 的运行,clang 必须支持不同的参数对各种行为进行控制,所以,clang driver 启动后的第一个主要任务就是 参数解析 正式分享前,我们先按照惯例分享本文涉及的主要 图...一、DriverOptTable DriverOptTable 记录了 clang driver 相关的 Info 信息,是 OptTable 的子类 DriverOptions 模块提供了函数 const...image OptTable 的初始化时,记录一些关键的 ID,用于后续使用,比如 TheInputOptionID 同时,会通过 PrefixChars 和 PrefixesUnion 记录合法的参数前缀...arch 根据 Info 初始化 Option 持有参数信息 通过 Option::accept 方法校验参数是否正常 参数正常时直接返回 如果没有找到合适的参数,再判断参数是否以 / 开头,如果开始...image 先转发到 Option::acceptInternal 方法进行参数校验 判断解析到的参数是否属于别名 如果别名,进行特殊处理 Option::acceptInternal 方法会根据 Option

    2K40

    LLVM 核心简明示例 : llvm::Value && llvm::Type && llvm::Constant

    LLVM 核心简明示例 : llvm::Value && llvm::Type && llvm::Constant llvm核心位于 include/llvm/IR中,用以表示机器无关且表现力极强的...它是图如下: ? llvm::Argument,llvm::BasicBlock,llvm::Constant,llvm::Instruction这些很重要的都是它的子类。...后者可以跟踪有哪些其他Value使用自己,我们可以使用下面的迭代器对它进行访问: unsigned use_size() 返回有多少Value使用它 bool use_empty() 是否没有Value...getTypeID() <<")\n"; } system("pause"); return 0; } 除此之外llvm::Type还有很多成员函数,详细请参见http://llvm.org/doxygen...:string getName() const void setName(const std::string &Name) llvm::Constant llvm::Constant表示一个各种常量的

    4.2K30

    【Cocos2d-x】开发基础-Cocos简介与环境搭建

    你拿过来之后,根据你的需求,根据你要开发的游戏的特点加上一些你自己的东西,那么这就是游戏引擎。 如果没有游戏引擎,你完全可以自己做那些事情,有了游戏引擎之后,很多东西就不用自己去做了。...Corona SDK,Construct 2,WiEngine和Cyclone 2D Coco2d-iphone和Cocos2d-x看名字就知道有些联系了,Cocos2d-x很多类似管理的东西,比如对象,的设计就是从...,需要调用cocos2d-x(我们不需要管怎么绑定的,只要JS,就能开发本地游戏) 4、A线路:开发网页游戏 4.在Windows平台下开始开发Cocos2d-x游戏 为什么选择在Window下开发游戏...,里面没有帮助文档 image.png 现在里面的内容是帮助我们生成帮助API文档的 类似Java的网页式的帮助文档 使用Doxygen(无法生成图片)和Graphviz工具,结合使用...启动Doxygen image.png 然后File->open 打开cocos2d-x-3.13.1\docs下的doxygen.config文件 我们不需要做其他事情,然后直接

    1.8K30

    如何设计一个C++的

    如果定义某个的变量时没有提供初始化时就会使用默认构造函数。 这和上一个问题类似,首先需要了解什么时候需要默认构造函数,看下面这段代码。...这个很明确,如果作为被派生时,该的析构函数就一定要声明为虚函数,如果某个确定不会被派生,那就不要声明其析构函数为虚函数。 需要提供拷贝构造函数?...如果你期望在某个成员函数内不更改成员函数,而又没有标记为const,这时自己或者其他人在此函数内改动了某些成员变量,编译器对此没有任何提示,这就有可能产生潜在的bug。...如果子类想要重写某个虚函数时,可以将此函数标记为override,那该函数必须重写父虚函数,否则编译器报错。 标明某个函数是虚函数,有子类继承时可以改写此函数的行为。...里氏替换原则:子类必须能够替换父,任何引用的地方必须能透明的使用子类的对象,开放关闭原则的具体实现手段之一。

    1.5K20

    Java基础-面向对象(三)

    子类可以从父继承属性和方法 子类可以提供自己单独的属性和方法 封装/隐藏encapsulation 对外隐藏某些属性和方法 对外公开某些属性和方法 多态 polymorphism 为了适应需求的多种变化...高内聚 :就是的内部数据操作细节自己完成,不允许外部干涉; 低耦合 :仅暴露少量的方法给外部使用。...(除非本属性确定会让子类继承) 提供相应的get/set方法来访问相关属性. 这些方法通常是public,从而提供对属性的读取操作。 (注意:boolean变量的get方法是用:is开头!)...子类是父的扩展 不同的叫法:超、父子类、派生 ? 方法的重写(override) 在子类中可以根据需要对从中继承来的方法进行重写。...(由于多态) Object Object是所有Java的根基 如果的声明中未使用extends关键字指明其,则默认为Object 重写:toString方法: 默认返回:包名+

    51820

    精选30道Java笔试题解答

    这和抽象有什么区别呢,怎么体现接口更高的抽象级别呢,怎么体现接口提供的统一的协议呢,那还要接口这种抽象来做什么呢?所以接口中 不能出现变量,如果有变量,就和接口提供的统一的抽象这种思想是抵触的。...一个如果我们不写构造方法,那么编译器帮我们加上一个默认的构造方法(就是没有参数的构造方法),但是如果自己写了构造方法,那么编译器就不会给你添加了,所以有时候当你new一个子类对象的时候,肯定调用了子类的构造方法...,但是如果子类构造方法中我们并没有显示的调用的构造方法,如:super();  这样就会调用父没有参数的构造方法。...第二个规则:如果子类的构造方法中既没有显示的调用构造方法,而中又没有无参的构造方法,则编译出错,所以,通常我们需要显示的:super(参数列表),来调用父有参数的构造函数,此时无参的构造函数就不会被调用...总之,一句话:子类没有显示调用父构造函数,不管子类构造函数是否带参数都默认调用父无参的构造函数,若父没有则编译出错。 最后,给大家出个思考题:下面程序的运行结果是什么?

    92940

    doxygen教程_genedoc教程

    在每个代码项中都可以有两描述:一种就是brief描述,另一种就是detailed。两种都是可选的,但不能同时没有。简述(brief)就是在一行内简述地描述。...3.先从文件开始注释,然后是所在文件的全局函数、结构体、枚举变量、命名空间→命名空间中的→成员函数和成员变量。 4.Doxygen无法为DLL中定义的导出文档。...@{@}标记可以放置group的注释中,也可以在一个独立的注释块  使用这些group的标记符号groups也可以嵌套。  如果多次使用一个group标签,将会出错。...如果不希望doxygen强行执行唯一标签,可以使用\addtogroup而非\defgroup。运作方式和\defgroup很像,但是如果该group已经定义,它默认向已存在的注释中添加一个新的项。...Doxygen已经可以自动按照类型和protection级别将这些things归组在一起,但可能你认为仅仅这样是不够的或者这种缺省的方法是错误的。

    4.4K30

    CMake 秘籍(七)

    通过调用我们的自定义docs目标,可以构建文档: $ cmake --build . --target docs注意到,在构建树中会出现一个_build子目录。...如果你导航到列表,你可以例如浏览Message的文档: 工作原理 CMake 默认不支持文档构建。但是,我们可以使用add_custom_target来执行任意操作,这是我们在本食谱中利用的机制。...与在线 Read the Docs 服务(readthedocs.org)结合使用,它提供了一种快速开始编写和部署文档的绝佳方式。本食谱将向您展示如何使用 CMake 基于 Sphinx 构建文档。...启动浏览器打开index.html文件后,您可以导航到Message的文档: 工作原理 您注意到,尽管在声明自定义BREATHE_DOC_TARGET_NAME目标时只给出了对 Sphinx 的调用...我们预计这段代码表现出数据竞争,因为所有线程都在没有明确同步或协调的情况下读取和修改同一地址。换句话说,我们预计最终的s,即代码末尾打印的s,可能会在每次运行中有所不同。

    16200

    【C++】继承

    而继承提供的是一种设计层次的代码复用,在原有中增加扩展并实现新的功能,这样所产生的叫做派生子类,原有被称为或父。 2....到现在为止,我们已经学过很多域了,比如局部域、全局域、域、命名空间域等等,派生的作用域当然也是不同的,如果继承中子类有名字相同的成员函数或变量,则子类屏蔽父的这些同名成员,如果调用则优先调用子类的同名成员...//如果没有合适的默认构造,则必须在子类中调用有参的构造完成成员的初始化。...= &s)//不要自己自己赋值 { Person::operator=(s);//发生切割或切片,将子类中的父成员进行赋值,父子类的赋值重载构成隐藏,默认调就近的...有人可能会有疑问,为什么要存派生到虚的地址偏移量呢?虚成员不就在D的最下面?我们D对象的内存空间大小已知,那通过D指针不就能找到最下面的虚成员

    69910

    Swift基础 继承

    注意 Swift不会从通用继承。您在不指定超的情况下定义的自动成为供您构建的。 下面的示例定义了一个名为Vehicle的。...这样做澄清您打算提供重写,并且没有错误地提供匹配的定义。意外覆盖可能导致意外行为,任何没有override关键字的覆盖都会在编译代码时被诊断为错误。...访问超方法、属性和下标 当您为子类提供方法、属性或下标覆盖时,有时使用现有的超实现作为重写的一部分非常有用。例如,您可以细化该现有实现的行为,或将修改后的值存储在现有继承的变量中。...子类版本被调用: let train = Train() train.makeNoise() // Prints “Choo Choo” 压倒一切的属性 您可以重写继承的实例或类型属性,为该属性提供自己的自定义获取器和设置器...如果您想观察属性值的变化,并且您已经在为该属性提供自定义设置器,您可以简单地从自定义设置器中观察任何值更改。 以下示例定义了一个名为AutomaticCar的新,这是Car的一个子类

    11200

    Django 模型继承 BaseModel

    当其用作其它模型时,它的字段自动添加至子类。...Meta 继承 当一个抽象被建立,Django 将所有你在中申明的 Meta 内部类以属性的形式提供。若子类未定义自己的 Meta ,它会继承父的 Meta。...但是,若你忘了使用它们,Django 会在你执行系统检查(或运行 migrate)时抛出错误。 如果你未指定抽象中的 related_name 属性,默认的反转名会是子类名,后接 '_set' 。...如果你想修改连接回父的属性名,你可以自己创建 OneToOneField,并设置 parent_link=True,表明该属性用于连接回父。...第一个出现的(比如 Meta )就是会被使用的那个;举个例子,如果存在多个父包含 Meta,只有第一个会被使用,其它的都会被忽略。 一般来说,你并不会同时继承多个父

    2.1K10

    再探虚函数

    Q1:C++的多态如何实现 静态多态: 也称为编译期间的多态,编译器在编译期间完成的,编译器根据函数实参的类型(可能进行隐式类型转换),可推断出要调用那个函数,如果有对应的函数就调用该函数,否则出现编译错误...动态多态 在的函数前加上virtual关键字,在派生中重写该函数,运行时将会根据所指对象的实际类型来调用相应的函数,如果对象类型是派生,就调用派生的函数,如果对象类型是,就调用的函数...2、纯虚函数是在中声明的虚函数,它在没有定义,但要求任何派生都要定义自己的实现方法。在中实现纯虚函数的方法是在函数原型后加"=0" 3、声明了纯虚函数的是一个抽象。...如果说,抽象无法实例化对象,那就无法使用对象方法了嘛。...所以在调用的析构函数时,派生对象的数据成员已经销毁,这个时候再调用子类的虚函数没有任何意义。 ---- Q8:静态函数能定义为虚函数

    87020

    【C++】多态

    支付宝首先会分析你的账户数据,如果你是新用户、没有经常支付宝支付等等,那么你需要被鼓励使用支付宝,那么就你扫码金额 = random()%99;如果你经常使用支付宝支付或者支付宝账户中常年没钱,那么就不需要太鼓励你去使用支付宝...如果子类自己的成员存在资源管理,那只调父析构的话,就只清理了子类里面父的部分,那是不是就内存泄漏了啊。 那这里为什么是这样的结果呢? 大家回忆一下delete会做哪些事情?...但是在这个地方,我们期望它是这样正常的只调父的析构? 是不是不期望啊,因为如果的指针指向的是子类对象,在delete的时候还是只调父的析构,那是不是就可能会有内存泄漏的风险啊。...override:检查派生是否对的虚函数进行了重写,如果没有重写编译报错。 这里是重写了的,所以没报错。...我们知道虚函数重写的话是必须加virtual的,子类可以不加,但建议加上 所以如果把父的virtual去掉就会报错 因为子类里加了override,它必须对的虚函数进行重写。

    11510

    【C++】多态(定义、虚函数、重写、隐藏)

    继承中要构成多态还有两个条件: 必须通过的指针或者引用调用虚函数 被调用的函数必须是虚函数,且派生必须对的虚函数进行重写 如果是通过的指针调用虚函数,要如下图所示使用: 虚函数 虚函数...虽然Car不能实例化对象,但是可以用它的指针指向子类,然后调用。 接口继承和实现继承 普通函数的继承是一种实现继承,派生继承了函数,可以使用函数,继承的是函数的实 现。...派生的虚表生成:1.先将中的虚表内容拷贝一份到派生虚表中 2.如果派生重写了中某个虚函数,用派生自己的虚函数覆盖虚表中的虚函数 3.派生自己新增加的虚函数按其在派生中的声明次序增加到派生虚表的最后...可以看到func3没有显示放在哪里。我们依旧可以自己打印出来看,这里直接给出答案,func3放在了base1的虚表里面。 结论:多继承派生的未重写的虚函数放在第一个继承部分的虚函数表中。...答:不能,因为静态成员函数没有this指针,使用类型::成员函数 的调用方式无法访问虚函数表,所以静态成员函数无法放进虚函数表。 构造函数可以是虚函数

    16010

    clang 源码导读(4): clang driver 构建 Actions

    正式分享前,我们先按照惯例分享本文涉及的主要 图 和 流程图,方便对 参数解析 的主要流程进行理解 Action[1] 是执行的编译步骤,持有Input、Action 类型,产物类型等信息;可以理解为将某种输入转为输出文件的操作步骤...BuildUniversalActions 方法源码分析 BuildUniversalActions 方法负责构建 Actions 根据 -arch 参数生成需要处理的 Archs ,留待后续的处理使用...image 如果没有传入 -arch 参数,可以通过 ToolChain::getDefaultUniversalArchName() 方法获取 triple 对应的架构 ?...image 当所有源码文件循环完毕后,判断 LinkerInputs 是否为空;如果非空,增加一个 LinkJobAction 进行下一步处理 ?...记录需要产出文件的架构,比如 arm64 或者 armv7 如果 Arch 数量大于 1,新增一个 LipoJobAction ,LipoJobAction 会将不同的架构的二进制合并为一个 fat

    2.2K20
    领券