【发布时间】:2012-02-17 03:44:55
【问题描述】:
可能重复:
What will happen when I call a member function on a NULL object pointer?
我认为这段代码和程序输出可以自我解释:
#include <iostream>
#include <string>
using namespace std;
class Test
{
public:
void Not_Static(string args)
{
cout << args << endl;
}
};
int main()
{
Test* Not_An_instance = nullptr;
Not_An_instance->Not_Static("Non-static function called with no object?");
cin.ignore();
return 0;
}
程序输出:
在没有对象的情况下调用非静态函数?
为什么会这样?
【问题讨论】:
-
因为它是未定义的行为,所以任何事情都可能发生。
-
@FredLarson,虽然是真的,但它并没有真正解释为什么它是可能的。
-
这是可能的,因为阻止你打自己的脸不是 C++ 的工作。
-
@NicolBolas,我认为 OP 询问为什么没有拍摄。
-
@MichaelKrelin-hacker:没有明显枪击事件。未定义的行为意味着未定义。这包括一切看起来都很好的可能性。
标签: c++