VC++问题,程序看不明白意思
#include<iostream.h>
class T
{public:
T(int x){a=x;b+=x;};
static void display(T c)
{cout<<"a="<<c.a<<'\t'<<"b="<<c.b<<endl;}
private:
int a;
static int b;
};
int T::b=5;
void main()
{
T A(3),B(5);
T::display(A);
T::display(B);
}
为什么结果是
a=3 b=13
a=5 b=13
啊?
参考答案:a=3和a=5应该没有什么疑问吧?那下面我就给你讲解一下为什么b=13。
因为b是用static声明的,是静态成员,所以在整个类T里面,只有一个b的值,正规写法是T::b,也就是说A.b和B.b实际上指的是同一个成员,也就是T::b。在定义对象A的时候,A.b=5+3=8(也就是T::b=8),定义对象B的时候,B.b=8+5=13(也就是T::b=13)。所以最后T::b=13。