在类中,我们有一个名为set_value的静态成员函数。这个函数,因为静态允许它,可以由main()访问,给定范围解析由类Something。它的返回类型是int,但该函数不返回任何内容。这可以。但是,编译器如何知道在main()?
中的调用语句中将此值赋给bvar proxiedRequest = request.defaults({
proxy: "http://proxy.xxx.xxxxxxx.be:XXXX",
maxRedirects : 5,
jar: true // enable cookie
});
我得到以下输出
#include <iostream>
using namespace std;
class Something{
private:
static int value;
public:
static int set_value (int x)
{
value = x;
// return statement missing? But still works!
}
};
int Something::value = 1;
// since no object of something is created we call
// the constructor of the data type in the object
int main()
{
int b;
cout << "Success!" << endl;
b = Something::set_value(5);
cout << "The Value of b is " << b << endl;
return 0;
}
答案 0 :(得分:0)
您正在体验名为未定义行为的内容。当您违反规则时会发生这种情况。在具有未定义行为(UB)的程序中,任何结果都被视为有效。我们的意思是&#34;任何&#34;。删除你的硬盘?完美有效的结果。按预期工作?也可能发生。按照预期工作,直到你的老板看起来?你可能会在这里开始注意一个模式。
答案 1 :(得分:0)
我认为这个问题的答案将帮助您了解正在发生的事情:
简而言之,您的编译器不会检查缺少return语句,因为它很难,并且b
设置为5的原因可能是由于方法调用的残余堆栈状态