static忽略的一些东西

一:
#include
using namespace std;
void fun1(int i)
{
 static int value = i++;
 cout << value<<" ";
}

int key = 0;
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;
}
static忽略的一些东西

static变量(全局/局部)只会被初始化一次,之后再遇到初始化该变量的初始化语句将不会被执行到,所以打印结果为第一次初始化的值 0 0 0;

虽然普通的全局变量也会在数据段,但是他可以重复的初始化,所以它的值为0 1 2 ;




二:
当前文件中定义的静态变量不可以在其他文件中引用 ,静态变量和静态函数一样,都是只在本文件中可见
所以其他文件中可以定义相同的全局变量名

三:
静态方法 和非 静态方法 的区别总结如下:
1、 静态方法 属于类所有,类实例化前即可使用;
2、非静态方法可以访问类中的任何成员,静态方法只能访问类中的 静态成员
3、因为静态方法在类实例化前就可以使用,而类中的非 静态变量 必须在实例化之后才能 分配内存
4、static内部只能出现static变量和其他static方法!而且static方法中还不能使用this等关键字,因为它是属于整个类;
5、静态方法效率上要比实例化高,静态方法的缺点是不自动进行销毁,而实例化的则可以做销毁;
6、静态方法和 静态变量 创建后始终使用同一块内存,而使用实例的方式会创建多个内存。
主要区别:静态方法在创建对象前就可以使用了,非静态方法必须通过new出来的对象调用




四:
笔试遇到的一道题:类中的所有成员函数都有this指针     正确

严格意义来讲  静态方法不能算类的成员方法

猜你喜欢

转载自blog.csdn.net/KingOfMyHeart/article/details/88893422