将NULL指针解除为类的成员函数

时间:2015-10-13 09:34:48

标签: c++

我很好奇这个程序如何能够打印类的func()声明。

<AutoSuggestBox x:Name="autoSuggestBox">
    <Interactivity:Interaction.Behaviors>
        <local:SelectListViewItemWhenElementGotFocusBehavior ListView="{Binding ElementName=DirectionEntryList}" />
    </Interactivity:Interaction.Behaviors>
</AutoSuggestBox>

编译器版本: g ++(Ubuntu / Linaro 4.4.7-1ubuntu2)4.4.7 版权所有(C)2010 Free Software Foundation,Inc。

我怎么能得到方法func()的打印?

2 个答案:

答案 0 :(得分:0)

取消引用空指针会产生未定义的行为。

我可以猜到为什么这对你来说仍然有效(但它又是UB!),但如果你试图访问func()中的成员变量,我很确定它会停止工作

答案 1 :(得分:0)

取消引用NULL指针意味着您有未定义的行为。

但是在大​​多数实现中,在这种情况下,thisNULL的函数最终正常,调用非虚方法的正常实现是设置隐藏参数{{1}作为指向对象的指针(在本例中为this),然后只需调用该函数。如果您不访问成员变量或调用虚拟方法,那么在大多数实现中都应该没问题。

由于您无法访问成员或调用虚函数或以任何其他方式对NULL指针执行任何有用的操作,因此您非常接近this方法的情况,我建议如果不使用static指针,则使用它。

对于您希望无法使用this指针而不检查this ness的角落情况,您仍然可以使用NULL方法并明确地传递指针对象:

static