【发布时间】:2016-05-16 01:02:06
【问题描述】:
我有下一个代码(让它小而简单),
为什么speed += 工作正常,尽管speed 根本没有初始化?
#include <iostream>
using namespace std;
class Vehicle {
protected:
int speed;
public:
virtual void repair(int j) {
cout << "Vehicle " << j << endl;
if (repair())
{
speed += j;
cout << "Speed:" << speed;
}
}
int repair(){ cout << "Vehicle repair " << endl; return 1; }
};
void main() {
Vehicle v; //Car c; CityCar cc;
Vehicle * vp; //Car * cp;
vp = &v;
vp->repair(1);
}
【问题讨论】:
-
速度只是一个垃圾值,所以它可能会起作用,但请先初始化变量。它可以防止错误。
-
问题是为什么?如果我愿意: int i;我++;我会得到一个错误
-
如果我愿意: int i;我++;我会得到一个错误这应该是一个警告而不是一个错误,除非你启用了将警告视为错误。
-
如果你能做到
void main()那么你可以使用未初始化的变量。顺便说一句,main函数返回int。总是。 -
我刚刚在 Visual Studio 2013 中添加了
int i; i++;,得到了warning C4700: uninitialized local variable 'i' used,这是一个警告而不是错误。我没有启用将警告视为错误。
标签: c++ initialization