如果我有一个类Rectangle
class Rectangle{
private:
double width;
double height;
public:
void Set(double w , double l){
width = w;
height = l;
}
};
我发现了一个对象:
Rectangle *Obj;
然后使用Set function as
Obj->Set(6.0, 9.0);
程序运行并显示没有错误,而据我说它应该显示错误,因为我没有初始化指针。
答案 0 :(得分:4)
使用未初始化的指针是未定义的行为。这意味着实现可以做任何想做的事情,或根本不做任何事情。
行为刚刚未定义。
答案 1 :(得分:1)
我刚刚在Visual Studio中编译了这个,我得到了以下错误。可能你选择的编译器没有这些检查?你正在使用什么编译器?
error C4700: uninitialized local variable 'Obj' used
答案 2 :(得分:1)
访问未初始化指针的值 - 更不用说解除引用它 - 给出了未定义的行为。
未定义行为的本质是允许任何结果,但没有特别要求。那个词"任何"是相当广泛的....发送错误信息是正确的。不发出错误消息是正确的。重新格式化硬盘驱动器并安装不同的操作系统是正确的(尽管实际上不太可能)。