• C++类中静态变量和普通变量的区别


    静态变量:

    1.静态变量会被编到程序的exe里面,从程序启动到结束,它一直存在;

    2.静态变量的初始化值为0;

    3.全局变量默认是静态变量;

    4.在类中的函数变量前面加了static的也是静态变量,只不过被语言限定在只能在函数内部使用;

    5.在有MFC对话框的程序了,如果一个变量和对话框绑定,那么该变量就不能声明为静态变量,函数也是一样的,因为声明为静态变量后不能随时接受对话框内的值,    主要是因为静态变量的值设置后是不能被修改的;

    6.可以使用类名+静态成员名访问此静态成员,因为静态成员存在于内存,非静态成员需要实例化才会分配内存,所以静态成员不能访问非静态成员,因为静态成员存    在于内存,所以非静态成员可以直接访问类中的静态成员;

    7.在类的内部变量前面加static,则将此变量声明为静态成员变量,无论这个类的对象定义了多少个,静态数据成员在程序中也只有一份拷贝,由该类型的所有对象共    享访问。即静态数据成员是该类的所有对象所共有的。对该类的多个对象来说,静态数据成员只分配一次内存,供所有对象共用。所以,静态数据成员的值对每个对    象都是一样的,它的值可以更新;

    8.类中静态变量的初始化形式为:<数据类型><类名>::<静态数据成员> = <值>;

    9.静态数据成员和普通数据成员一样遵从public、private、protected访问规则,如果静态数据成员的访问权限允许的话,即为public成员,可在程序中,按上述格     式来引用静态数据成员;

    10.同全局变量相比,使用静态数据成员有两个优势:

    (1)静态数据成员没有进入程序的全局名字空间,因此不存在与程序中其他全局名字冲突的可能性;

    (2)可以实现信息隐藏。静态数据成员可以使private成员,而全局变量不能。

    11.对于类内部的静态成员函数是不具备this指针的,而非静态函数都会有一个指向类的对象本身的一个this指针,静态成员函数无法访问属于类对象的非静态数据成     员,也无法访问非静态成员函数,它只能调用其余的静态成员函数。

    非静态变量:

    1.非静态变量只是在函数被调用的时候非配到栈里面的,函数调用结束后,该变量也就被销毁了;

    2.非静态变量的值是可以改变的。

    3.当类被实例化后,可以通过实例化的类名进行访问,非静态成员的生存期决定于该类的生存期,而静态成员则不存在生存期的概念,因为静态成员始终驻留在内存      中。

  • 相关阅读:
    详解 final 和 static
    详解 方法的覆盖 —— toString() 与 equals()的覆盖
    详解 继承(上)—— 工具的抽象与分层
    详解 继承(下)—— super关键字 与 多态
    Java 基础讲解
    矩阵 的实现
    C语言 贪吃蛇
    巨大数——三则运算(+、-、*)
    浅谈 循环数组
    人体对电流的反应
  • 原文地址:https://www.cnblogs.com/pengjun-shanghai/p/4794127.html
Copyright © 2020-2023  润新知