zoukankan      html  css  js  c++  java
  • 关于类的静态成员的注意事项

    1、类的静态成员存在于任何类的对象之外,对象中不包含任何与静态数据成员有关的数据类的静态数据成员被所有的类的对象共享,所以它不包含任何this指针,也就不能将其成员函数声明为const

    2、类中的成员函数可以直接使用成员函数访问静态成员,但是在类外的对象、引用或指针需要通过作用域运算符指出其具体属于哪个类

    3、静态成员函数的static关键字只能出现在声明语句里。静态成员不是在类的对象创建时定义的,因此不是通过类的构造函数初始化

    4、不能在类中初始化静态成员,只能在类的外部定义并初始化每个静态成员,同时一个静态对象只能定义一次

    5、若想确保静态数据成员对象只定义一次,将该对象的定义与其他非内联函数放在一个文件里

    6、若想静态成员能在类内进行初始化,则静态成员需要使用const整型(常量表达式)进行初始化,并且静态成员本身是字面值常量类型的常量表达式

    7、若静态成员仅限于编译器可以修改它的值的情况下,一个const或constexpr static不需要分别定义,若静态成员的值不能替换的情况下,那么该成员必须有一条定义语句。

    8、即使一个常量静态数据成员在类内部被初始化了,通常情况下需要在类外部定义一下该成员

    9、静态成员和普通成员的区别:1)静态成员独立于任何对象,与类本身相关联,而普通成员与类的对象相关联。2)静态成员可以作为默认实参,非静态成员不能作为默认实参,它本身是对象的一部分。

    10、静态数据成员可以是不完全类型,指针或引用成员也可以是不完全类型,但是普通成员必须是完全类型

    11、静态成员的优点:作用域为与类的范围之内,避免与其他类的成员或者全局作用域的名字冲突;可以是私有成员,而全局对象不可以;通过阅读程序可以非常容易地看出静态成员与特定类关联,使得程序的含义清晰明了。

  • 相关阅读:
    解决IE6不支持position:fixed的bug
    响应式Web设计基础
    多行文本溢出显示省略号(…)全攻略
    解读CSS布局之-水平垂直居
    理解CSS中BFC
    七个你可能不了解的CSS单位
    屏蔽系统热键钩子Hook程序
    Win 2008 r2 远程桌面多用户登陆,一用户多登陆配置
    把Excel转换成DataTable,Excel2003+
    DataGridView不显示未绑定的列-AutoGenerateColumns
  • 原文地址:https://www.cnblogs.com/Dark-King/p/9520719.html
Copyright © 2011-2022 走看看