问题及代码:
<p>#include <iostream>
using namespace std;
class Test
{
private:
static int val;
int a;
public:
static int func();
static void sfunc(Test &r);
};</p><p>int Test::val=20; //静态变量只能在类外赋值
int Test::func()
{
val+=val;
return val;
}</p><p>void Test::sfunc (Test &r)
{
r.a=25;
cout<<"Result3="<<r.a<<endl;
}</p><p>int main()
{
cout <<"Resultl="<<Test::func()<<endl; //调用func函数 输出结果 val=40
Test a;
cout<<"Result2="<<a.func()<<endl; //此时调用的时候,val已经定义为40,所以再次输出的时候 val+val=80
Test::sfunc (a);
return 0;
}</p><p> </p>
运行结果:
知识点总结:
静态变量static存储于静态存储器,变量会被放在程序的全局存储区中,这样可以在下一次调用的时候还可以保持原来的赋值
静态变量只能在类外赋值