我有一个简单的类:访问nullptr的可能性如何?
class B
{
public:
int getData() { return 3; }
};
然后,我初始化它的指针与nullptr:
B *foo{ nullptr };
,然后尝试使用它自带的惊喜:
int t = foo->getData();
现在t是3.如果没有构建这个类,那可能怎么样?是否因为getData()不使用“this”?这打破了我所有关于指针的知识。
这是预期的行为?我在Visual Studio 2013中工作。
它的工作原理是因为'foo-> getData()'等同于'getData(foo);'而被调用者从不* dereferences *参数。请注意,即使它起作用,它在C++中也被归类为* undefined behavior *。 – Nawaz
感谢所有的答案。在我看来,它不应该是未定义的行为,它应该崩溃。从我的角度来看,这是安全问题。如果一个方法接收到一个指向类的指针并且这个指针是nullptr,我可以使用这个指针来调用一个方法。是的,我知道它不能保证它会起作用,但是在你的图书馆里是一个漏洞。 – LeDYoM
LeDYoM:“*在我看来,它不应该是未定义的行为,它应该崩溃。”*请耐心使用该语言,阅读C++的设计目标及其历史。 – Nawaz