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

C++系列-static成员

🌈个人主页:羽晨同学 

💫个人格言:“成为自己未来的主人~”  

概念

声明为static的类成员称为类的静态成员,用static修饰的成员变量,称之为静态成员变量,用static修饰的成员函数,称之为静态成员函数,静态成员变量一定要在类外进行初始化。

我们来看下面的这一段代码,思考一下,程序中创建出了多少个类对象。

#include<iostream>
using namespace std;
class A
{
public:A(){++_scount;}A(const A& t){++_scount;}static int GetAcount(){//this->return _scount;}
private:
//	int _a1 = 1;
//	int _a2 = 2;
//public:static int _scount;
};
int A::_scount = 0;
void TestA()
{cout << A::GetAcount() <<endl;A a1, a2;A a3(a1);cout << A::GetAcount() << endl;
}
int main()
{TestA();return 0;
}

 在上面的这段代码当中,我们可以获取到下面的几个知识点

  • 静态成员变量必须在类外定义,定义时不添加static关键字,类中只是声明
  • 类静态成员即可用类名::静态成员或者对象.静态成员来访问。
  • 静态成员函数没有隐藏的this指针, 不能访问任何非静态成员
  • 静态成员也是类的成员,受到public,protected,private等访问限定符的约束。

我们再来看下面的这段代码:

#include<iostream>
using namespace std;
class A
{
public:A(){++_scount;}A(const A& t){++_scount;}static int GetAcount(){//this->return _scount;}
private:int _a1 = 1;int _a2 = 2;
//public:static int _scount;
};
int A::_scount = 0;
void TestA()
{cout << A::GetAcount() <<endl;A a1, a2;A a3(a1);cout << A::GetAcount() << endl;
}
int main()
{A aa1;cout << sizeof(aa1) << endl;return 0;
}

 

我们可以看到,类的大小是4个字节,这个说明了什么呢?

说明静态成员为所有类对象所共享,不属于某个具体的对象,存放在静态区。

 

http://www.lryc.cn/news/354381.html

相关文章:

  • Git | 创建和管理Pull Request总结
  • 电机控制系列模块解析(23)—— 同步机初始位置辨识
  • 【数据库基础-mysql详解之索引的魅力(N叉树)】
  • 力扣739. 每日温度
  • KDE6桌面于2024年2月发布
  • 「TypeScript系列」TypeScript 对象及对象的使用场景
  • shell从入门到精通(22)shell正则匹配~=
  • 【Spring】使用Spring常用导入依赖介绍
  • PC端应用订阅SDK接入攻略
  • WebService的wsdl详解
  • 数据分析实战:从0到1完成数据获取分析到可视化
  • 【Spring】深入理解 Spring 中的 ImportSelector、Aware 和 Processor 接口
  • 【C语言】strstr函数的使用和模拟
  • 五分钟”手撕“异常
  • 【vue3+elementuiplus】el-select下拉框会自动触发校验规则
  • 【论文复现】LSTM长短记忆网络
  • 目标检测YOLO实战应用案例100讲-【自动驾驶】激光雷达
  • 用C语言设计轨道电机的驱动库
  • HTML跳动的爱心
  • 汇编原理(二)
  • Android Studio开发之路(十三)主题影响Button颜色问题解决及button自定义样式
  • eNSP学习——OSPF单区域配置
  • 深度学习中的优化算法二(Pytorch 19)
  • R实验 方差分析
  • AI智能体|手把手教你使用扣子Coze图像流的文生图功能
  • 应用程序图标提取
  • Excel表格在线解密:轻松解密密码,快速恢复数据
  • springboot小结1
  • 【Qt 学习笔记】Qt窗口 | 菜单栏 | QMenuBar的使用及说明
  • Spark运行模式详解