警告 C26435 函数 CXxxx::DoDataExchange 应准确指定 `virtual`、`override` 或 `final` 之一 (c.128)
Posted
技术标签:
【中文标题】警告 C26435 函数 CXxxx::DoDataExchange 应准确指定 `virtual`、`override` 或 `final` 之一 (c.128)【英文标题】:Warning C26435 Function CXxxx::DoDataExchange should specify exactly one of `virtual`, `override`, or `final` (c.128) 【发布时间】:2021-10-18 15:00:18 【问题描述】:这是另一个代码分析警告:
警告
C26435
函数CAssignSelectedColumnDlg::DoDataExchange
应指定virtual
、override
或final
之一(c.128)。
示例(样板 MFC 代码):
void CAssignSelectedColumnDlg::DoDataExchange(CDataExchange* pDX)
...
...
如果我理解正确的文档,我需要附上:
override
或
final
...到头文件中的函数声明?
【问题讨论】:
【参考方案1】:是的。您发布的链接中有另一个链接:
https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Rh-override
你可以相信作者:)
编辑:
Bjarne Stroustrup Herb Sutter
为了他人的利益:
void DoDataExchange(CDataExchange* pDX) final;
【讨论】:
谢谢。在我的情况下,我会使用关键字final
,因为我不会从我的对话框中派生一个新类。我就是这么理解的。
final
在这种情况下是正确的关键字。如果要派生该类,则可以使用override
,除非它是类层次结构的基类,在这种情况下需要virtual
关键字。该诊断旨在防止意外地将virtual
类成员隐藏在具有相同签名的非virtual
类成员的派生类中,而不是覆盖它。这将是编译得很好的合法代码,生成大部分时间都可以运行的程序。这使得发现这个错误特别具有挑战性。以上是关于警告 C26435 函数 CXxxx::DoDataExchange 应准确指定 `virtual`、`override` 或 `final` 之一 (c.128)的主要内容,如果未能解决你的问题,请参考以下文章