3

这是最小示例,在 Visual Studio 2019 中开始代码分析

#include <sal.h>
class CTest
{
public:
    virtual void A() = 0;
    virtual void B() const = 0;
    _Check_return_ _Ret_maybenull_ static CTest* GetInstance()
    {
        return (CTest*)0;
    }
};


void Test2()
{
    auto a = CTest::GetInstance();
    a->A();     // no warning ?

    auto b = CTest::GetInstance();
    b->B();     // warning C6011
} 

为什么 C6011 警告只对调用空类指针的 const 成员函数起作用。但不是非常量成员函数?显然这两个代码都会崩溃。

4

0 回答 0