全局作用域的是不是一定会被初始化?
具有全局作用域的是不是一定会被初始化,如果你不给它值的话,会自动初始化为0?如下面这道题:
#include <iostream>
using namespace std;
class Clock
{
public:
Clock();
void SetTime(int NewH,int NewM,int NewS);
void ShowTime();
~Clock(){}
private:
int Hour,Minute,Second;
};
Clock::Clock()
{
Hour=0;
Minute=0;
Second=0;
}
void Clock::SetTime(int NewH,int NewM,int NewS)
{
Hour=NewH;
Minute=NewM;
Second=NewS;
}
void Clock::ShowTime()
{
cout<<Hour<<":"<<Minute<<":"<<Second<<endl;
}
Clock globClock; //具有文件作用域,被默认构造函数初始化为0,0,0;如果把构造函数去掉,还是会被初始化 //为0;
//但如果把这个放在主函数里,再把构造函数去掉,则不会被初始化为0;
void main()
{
cout<<"First time output:"<<endl;
globClock.ShowTime();
globClock.SetTime(8,30,30);
Clock myClock(globClock);
cout<<"Second time output:"<<endl;
myClock.ShowTime();
}