C/C++|面向对象编程的静态(static)成员小结

静态成员的概述

  • 在类内数据成员的声明前加上关键字static,该数据成员就是类内的静态数据成员,使得其与关联在一起;

几个重要的特点

  • 静态成员可以是public或者private的;
  • 静态数据成员的类型可以是常量、引用、指针、类类型等;
  • 类的静态成员存在于任何对象之外,对象中不包含任何与静态成员有关的数据,也就是任何对象的成员不包含静态成员;
  • 静态成员函数也不与任何对象绑定在一起,它们不包含this指针;
  • 静态成员函数不能声明成const的,而且我们也不能在static函数体内使用this指针。

访问静态成员

  • 可以使用类的对象、引用或者指针来访问静态成员;
  • 可以通过类和作用域运算符直接访问静态变量。

定义静态成员

  • 既可以在类的内部,也可以在类的外部定义静态成员函数。(在类外定义时,不能重复static关键字,该关键字只出现在类的内部)
  • 因为静态数据成员不属于类的任一对象,所以他们并不是在创建类时被定义的;
  • 不能在类的内部初始化静态成员,必须在类外部定义和初始化每个静态成员。也不用构造函数初始化;
  • 不过,可以为静态成员提供const整数类型的类内初始值,但要求静态成员必须是字面值常量类型的constexpr,初始值必须为常量表达式。

静态成员其他使用

  • 静态成员和指针成员可以是不完全类型(?)
  • 可以使用静态成员作为默认实参。
    (注:不完全类型是已声明但未定义的类。)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前言 把《C++ Primer》[https://book.douban.com/subject/25708312...
    尤汐Yogy阅读 13,145评论 1 51
  • C++文件 例:从文件income. in中读入收入直到文件结束,并将收入和税金输出到文件tax. out。 检查...
    SeanC52111阅读 7,928评论 0 3
  • 1.面向对象的程序设计思想是什么? 答:把数据结构和对数据结构进行操作的方法封装形成一个个的对象。 2.什么是类?...
    少帅yangjie阅读 10,437评论 0 14
  • 我们是一群人,一群自己都不知道在干些什么的人。我们每个人都不一样,在这个飞速的世界里,有人说我们是一群老鼠,啃坏了...
    偷星阿极阅读 1,241评论 0 0