一:
#include
using namespace std;
using namespace std;
void fun1(int i)
{
static int value = i++;
cout << value<<" ";
}
{
static int value = i++;
cout << value<<" ";
}
int key = 0;
void fun2(int i)
{
key = i++;
cout << key << " ";
}
void fun2(int i)
{
key = i++;
cout << key << " ";
}
int main()
{
for (int i = 0; i<3; i++)
{
fun1(i);
}
cout << endl;
for (int i = 0; i<3; i++)
{
fun2(i);
}
cout << endl;
return 0;
}
{
for (int i = 0; i<3; i++)
{
fun1(i);
}
cout << endl;
for (int i = 0; i<3; i++)
{
fun2(i);
}
cout << endl;
return 0;
}
虽然普通的全局变量也会在数据段,但是他可以重复的初始化,所以它的值为0 1 2 ;
二:
当前文件中定义的静态变量不可以在其他文件中引用 ,静态变量和静态函数一样,都是只在本文件中可见
所以其他文件中可以定义相同的全局变量名
三:
静态方法
和非
静态方法
的区别总结如下:
1、 静态方法 属于类所有,类实例化前即可使用;
2、非静态方法可以访问类中的任何成员,静态方法只能访问类中的 静态成员 ;
3、因为静态方法在类实例化前就可以使用,而类中的非 静态变量 必须在实例化之后才能 分配内存 ;
4、static内部只能出现static变量和其他static方法!而且static方法中还不能使用this等关键字,因为它是属于整个类;
5、静态方法效率上要比实例化高,静态方法的缺点是不自动进行销毁,而实例化的则可以做销毁;
6、静态方法和 静态变量 创建后始终使用同一块内存,而使用实例的方式会创建多个内存。
主要区别:静态方法在创建对象前就可以使用了,非静态方法必须通过new出来的对象调用 。
1、 静态方法 属于类所有,类实例化前即可使用;
2、非静态方法可以访问类中的任何成员,静态方法只能访问类中的 静态成员 ;
3、因为静态方法在类实例化前就可以使用,而类中的非 静态变量 必须在实例化之后才能 分配内存 ;
4、static内部只能出现static变量和其他static方法!而且static方法中还不能使用this等关键字,因为它是属于整个类;
5、静态方法效率上要比实例化高,静态方法的缺点是不自动进行销毁,而实例化的则可以做销毁;
6、静态方法和 静态变量 创建后始终使用同一块内存,而使用实例的方式会创建多个内存。
主要区别:静态方法在创建对象前就可以使用了,非静态方法必须通过new出来的对象调用 。
四:
笔试遇到的一道题:类中的所有成员函数都有this指针 正确
严格意义来讲 静态方法不能算类的成员方法