在C ++ pgm中,我的代码看起来像
int expectedNewValue = pCellScanData->WLToggle(iWL);
其中pCellScanData
是一个类,WLToggle
是该类的成员函数。由于编程错误,我使用pCellScanData
0(即nullptr
)调用此代码,并且它在调试(未优化)构建中没有给出运行时错误。函数WLToggle
未尝试访问该类的任何数据成员。它不是静态成员。
这种行为是期望的,还是C ++标准所允许的?即使它是,我希望调试版本至少可以警告这种可疑情况。
在64位Windows 7下使用Visual Studio 2015更新3。
更新:我问两个问题:(1)当前的 C ++标准说什么?这在引用的"复制"问题,但使用当时有效的标准(6年前)。 (2)为什么Visual Studio调试运行时没有为此未定义的行为发出警告或错误?