当前位置: 首页 > news >正文

C++——static成员

        类中用static修饰的成员变量称为静态成员变量,用static修饰的成员函数称为静态成员函数。它们的声明方式与普通变量和函数的声明方式差不多,只是前面多了一个static进行修饰。

class Count
{
public:Count(){}//静态成员函数static int GetCount(){return _count;}private:static int _count;//静态成员变量声明
};

        一、静态成员变量 

        类里面的成员变量只是声明,静态成员变量和普通成员变量的初始化方式不同。普通成员变量在构造函数里初始化,而静态成员变量需要在类外面单独初始化。初始化时在静态成员变量前面加上类域,且初始化时不加static关键字。

        这时候就要奇怪了,为什么该变量被private修饰,却可以在类外通过指定类域初始化?别奇怪,因为C++就是这样规定的,做个遵守规则的人。但是,虽然可以以这种方式初始化,但是在类外面不能用Count::_count来访问变量。就当静态成员变量的初始化是个例就好。

class Count
{
public:Count(){}//静态成员函数static int GetCount(){return _count;}private:static int _count;//静态成员变量声明
};int Count::_count = 0;//在类外单独定义

        还有一个区别是:普通成员变量属于每一个类对象,存储在对象里面;静态成员变量属于类,不依赖于任何对象存在,所有对象共享同一数据。因此,静态成员变量不能在初始化列表里定义。

        二、静态成员函数

        它有两个很大的特点:

        1.无this指针,所以只能访问静态成员,不能访问非静态成员;

        2.可以直接通过类名::静态成员函数名调用,无需对象实例化。

int main()
{int ret = Count::GetCount();return 0;
}
http://www.dtcms.com/a/278011.html

相关文章:

  • HiPPO: Recurrent Memory with Optimal Polynomial Projections论文精读(逐段解析)
  • QT控件命名简写
  • Linux内核高效之道:Slab分配器与task_struct缓存管理
  • 编译器优化——LLVM IR,零基础入门
  • 学习C++、QT---23(QT中QFileDialog库实现文件选择框打开、保存讲解)
  • 7月13日日记
  • 时间管理四象限理论
  • 小白学Python,操作文件和文件夹
  • 阶段性渗透总结
  • 第五章 Python手写数字识别【CNN卷积神经网络实现】
  • Windows怎样同步时间服务器?
  • 最简约的Windows多标签页文件管理器推荐 - 360文件夹 - 免费开源绿色软件推荐
  • Lucene原理
  • Android自定义View的事件分发流程
  • (33)记录描述窗体组件属性的枚举量 enum Qt :: WidgetAttribute, 简记为 WA_
  • Java结构型模式---外观模式
  • 和 *,以及 -> 和 .
  • C语言基础知识--柔性数组
  • 串口学习和蓝牙通信HC05(第八天)
  • LlamaIndex 检索器 Retriever
  • 题目V^V
  • 008_Claude_Code开发工具
  • 自注意力机制及其与早期注意力机制的区别
  • C++高频知识点(十)
  • Android 响应式编程完整指南:StateFlow、SharedFlow、LiveData 详解
  • 封装---统一封装处理页面标题
  • 关于 java:11. 项目结构、Maven、Gradle 构建系统
  • DAY02:【ML 第一弹】KNN算法
  • Datawhale AI夏令营——用AI预测新增用户学习笔记
  • 【VLLM】大模型本地化部署