为什么我可以在不初始化 c++ 的情况下使用类变量
Why I can use class Variable without initialize it c++
>我有下一个代码(让它变得小而简单),
为什么我让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);
}
在C++中,您始终可以使用未初始化的变量,最多会收到警告。除非您设置了"警告为错误"选项,在这种情况下,您显然会收到错误。
不同的编译器执行不同操作,因此在您的情况下,根据编译器和编译器选项,您可能会收到警告,也可能不会收到警告。看到这个问题。
请注意,实际上通过创建对象指针然后对其执行赋值运算符您实际上在垃圾值中初始化了它
试试这个:
Int x,*a;
a=&x;
cout<<*a;
速度是 int 的一种类型,int 是一种内置类型。如果对象是内置类型,则值初始化会将其设置为零,默认初始化它会给它一个未定义的值。在您的情况下,速度具有未定义的值。在公共部分添加带有构造函数初始值设定项的此构造函数应该适合您:
车辆() : 速度{0} {}
相关文章:
- 在这种情况下,当尝试从单独的类更新变量时,我是否需要使用指针?
- C++11 - 获取编译时的所有类变量,并在没有 Boost 的情况下为它们调用方法
- 如何在没有setter的情况下设置类内部类的成员变量?
- 是否可以在不修改父类的情况下将成员变量初始化推迟到继承的类?
- 虚拟继承情况下类的意外大小
- 在溢出的情况下,变量的值始终为负数
- C++-在不知道变量的名称的情况下使用变量
- 理解在c++中的真实情况下类变量是如何存储在内存中的
- gdb在选项卡完成的情况下打印变量时冻结
- 为什么编译器不允许我在开关情况下使用变量?
- 如何在不知道特定类型的情况下引用变量
- 有没有任何情况下,变量可以被赋予一个void函数
- 默认情况下全局变量是 extern 还是等效于在全局中使用 extern 声明变量
- 虚拟继承情况下类的大小
- 初始化各种开关情况下的变量
- 如何在不使用赋值运算符的情况下为变量赋值
- 我可以在不产生引用存储成本的情况下对变量进行别名吗
- 是否有可能在不使用指针的情况下将变量的作用域扩展到if语句之外?
- 在事先不知道总大小的情况下写入变量
- 在未初始化的情况下使用C++变量