怎么解释这样的一个错误的初始化产生的结果?请大家进来看一下

来源:百度知道 编辑:UC知道 时间:2024/06/04 21:32:26
#include<iostream>
using namespace std;
class A{
public :void func();
private : int a;
};
int a=6;
void A::func(){cout<<"值为"<<a<<endl;}
int main(){
A c;
c.func();}

我们知道类中的数据成员应由构造函数来完成初始化。顺便问一下由它的一般成员函数能不能完成初始化、更新或赋值?我在这里无意中错误的把a在全局区域中初始化,编译和链接都没错误(刚开始还以为这样也行),执行时输出" 值为-858993460",不管我改a的值为多少,都是输出这个值。我想请问一下,这是为什么?请大家回答我这两个问题,感谢!

程序没有初始化,编译器会进行初始化

-858993460=0xCCCCCCCC;
VC自动初始化变量的值,DEBUG时可以据此判断变量是否初始化过,从而给出告警信息
TC一般初始化变量的值为0

老大,c::a 和 全局的a 不是一个东西啊
你的int a=6;并不是改的c里边的那个a
要分清楚