首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

小妹一简单的程序懂不明白,大家帮忙看看,该如何解决

2012-03-04 
小妹一简单的程序懂不明白,大家帮忙看看#include iostream.hclassA{public:staticintavoidinit(){a1}

小妹一简单的程序懂不明白,大家帮忙看看
#include <iostream.h>
class   A{
public:
static   int   a;
void   init(){a=1;}
A(int   a=2){init();a++;}
};
int   A::a=0;
A   obj;
int   main()
{
cout < <obj.a;
return   0;
}
请构造函数的形参在这里的作用是什么,为什么去掉之后对结果有影响?还有构造函数的函数体中的 "a++ "为什么对结果没有影响?

[解决办法]
你的形参和A的静态数据成员a同名,
没去掉时,构造函数里只有init()内部才是对静态数据成员a的操作,a++是对形参的操作。
所以结果为1
去掉之后,a++也是对静态数据成员a的操作,所以结果为2
[解决办法]
int a=2把static int a遮挡了
[解决办法]
没错.因为同名了,所以在构造函数内出现的a++,编译时是先认为是形参的a,除非你用名空间指定
A::a++;这时才是静态成员的a.
去掉后,因为没有重名的影响,所以直接就认定是静态成员a.
[解决办法]
这是作用域的问题

热点排行