• static在类中的功能


    有时候类需要它的一些成员与类本身直接相关,而不是与类的各个对象保持关联。

    例如一个银行账户类可能需要一个数据成员来表示当前的利率。在此例中,我们希望利率与类关联,而非与类的每个对象关联。从实现效率上来看,没有必要每个对象都存储利率信息。而且更为关键的是,一旦利率浮动,我们希望所有的对象都能使用新值。基于这样的需求,static的功能就被实现出来了。

    C++类中, 可以定义静态成员变量。 使用 static 关键字对类的成员变量进
    行修饰时, 可以得到类的静态成员变量。
    类的静态成员变量的声明如下:
    static Type var_name; //在类的内部
    类的静态成员变量的初始化如下:
    Type class_name::var_name = init_value; //在类的外部
    类的静态成员变量的使用方法如下(当然,静态成员变量也需要满足类的访问权限要求---public private protected):
    A、 类名::静态数据成员
    B、 类对象.静态数据成员

    静态成员变量的特性如下:
    A、 定义时使用 static 关键字修饰
    B、 静态成员变量在类外单独分配空间, 类对象的大小不包括静态成员变量
    C、 静态成员变量在程序内部位于全局数据区
    静态成员变量属于整个类, 其生命周期不依赖于任何对象, 可以通过类名直
    接访问类的公有静态成员变量, 类的所有对象共享类的静态成员变量, 可以通过
    对象名访问类的静态成员变量。 类的静态成员变量只存储一份供所有对象共用,
    在所有对象中都可以共享它。 使用静态成员变量实现多个对象之间的数据共享不
    会破坏隐藏(相比全局变量的优点)的原则, 保证了安全性还可以节省内存。
    类的静态成员, 属于类, 也属于对象, 但终归属于类。

    static 修饰成员函数
    为了管理静态成员, C++提供了静态函数, 提供对外接口。 静态成员函数只能
    访问静态成员变量。
    静态成员函数的声明如下:
    static Type functionname(parameters);
    静态成员函数的特性如下:
    A、 静态成员函数的意义, 不在于信息共享、 数据沟通, 而在于管理静态数据
    成员, 完成对静态数据成员的封装。
    B、 静态成员函数只能访问静态数据成员。 原因: 非静态成员函数, 在调用时
    this 指针时被当作参数传进。 而静态成员函数属于类, 而不属于对象, 没有 this
    指针。
    静态成员函数的使用如下(当然,静态成员变量也需要满足类的访问权限要求---public private protected):
    A、 类名::函数调用
    B、 类对象.函数调用
    如果一个类的成员变量, 既要实现共享, 又要实现不可改变, 可以使用 static const 修饰。
     static const 修饰成员变量时, 既可以在类内部进行初始化, 也可以在类外进行初始化(类内不赋值,类外赋值,这个和普通定义时const修饰有点不同)。

    static const 修饰成员函数, 是静态成员函数。

    派生类中static变量和函数同样应该满足派生类的访问权限,public,private,protected的三看原则。

  • 相关阅读:
    Qt Qwt之坐标轴移动
    Lnux 16.04 VM下安装与汉化
    【学习笔记】开源日志记录工具log4j使用方法
    【学习笔记】关于DOM4J:使用DOM4J解析XML文档
    DOM的概念和简单应用:使用DOM解析XML数据
    初识Socket通信:基于TCP和UDP协议学习网络编程
    java 中的Scanner
    跟着前辈学编程
    集合应用案例:编写程序实现学生信息管理系统的录入登录
    简单Java程序向实用程序的过度:二进制文件的读写
  • 原文地址:https://www.cnblogs.com/yangguang-it/p/9650940.html
Copyright © 2020-2023  润新知