一个类的成员函数中的静态变量的作用域是整个类,还是对象呢?例如:
#include <iostream>
using namespace std;
class CA
{
public:
void print()
{
static int A=0;
A++;
cout<<A<<endl;
}
};
void main()
{
CA a,b;
a.print();
b.print();
system("pause");
}
结果是 1 1 还是 1 2 呢?
经过思考,猜想:
一个类中的成员函数并不在类中,只是和这个类有一种关联,一个对象调用成员函数时,
会隐藏地把存有自己的地址的指针传入被调用的成员函数,成员函数通过这个指针操作
调用它的对象中的成员变量。上例中对象a和对象b中的print()函数其实是同一个函数,
所以静态变量A也是同一个,猜想输出为 1 2
通过实验,输出为 1 2 ,证明我的猜想是对的。
这再次说明了类中只有 成员变量 和 一个成员函数表。
#include <iostream>
using namespace std;
class CA
{
public:
void print()
{
static int A=0;
A++;
cout<<A<<endl;
}
};
void main()
{
CA a,b;
a.print();
b.print();
system("pause");
}
结果是 1 1 还是 1 2 呢?
经过思考,猜想:
一个类中的成员函数并不在类中,只是和这个类有一种关联,一个对象调用成员函数时,
会隐藏地把存有自己的地址的指针传入被调用的成员函数,成员函数通过这个指针操作
调用它的对象中的成员变量。上例中对象a和对象b中的print()函数其实是同一个函数,
所以静态变量A也是同一个,猜想输出为 1 2
通过实验,输出为 1 2 ,证明我的猜想是对的。
这再次说明了类中只有 成员变量 和 一个成员函数表。