C++类的静态成员

C++ 类内静态成员使用方法 静态成员(static member)可以是类的成员变量(静态变量)或成员函数(静态函数)。共享性:所有类的对象共享同一个静态成员,改变其中一个对象的静态成员,所有对象都可以看到变化。独立性:静态成员不依赖于类的具体对象,因此它们不需要通过对象来访问。静态成员函数的定义也需要在类外部进行,使用类名::函数名的方式来实现。静态成员函数的实现与普通成员函数类似,只是它不能访问非静态的成员。public:// 静态成员变量声明static void printCount() { // 静态成员函数定义。 阅读详情

C++类的静态成员:

基本概念:

静态成员函数,和静态成员,属于类,存在于任何对象之外
对象中不包含任何与静态数据成员相关的数据,随类的产生而产生,不属于对象。(用sizeof求一个对象的大小,一定是不包含静态成员的)。

原理:this指针

当调用普通成员函数时,隐藏传入一个this指针,指向当前对象
调用静态成员函数,并不会传入this指针,所以函数不知道当前调用的数据成员究竟是哪个对象的数据成员(无法提供一个真正的对象)所以在静态成员函数中,不可以调用非静态的成员或成员函数

声明静态成员:

在成员名声明之前上关键字static使得其与类关联在一起,和其他成员一样,区分public,private。静态成员可以是常量,引用,类类型。

定义静态成员:

在类的外部定义静态成员时,不能重复static关键字,static只出现在类内部的声明语句中。
静态成员不属于对象,所以不是在创建对象时被定义的,所以肯定不是构造函数中初始化的。
一般不能在类的内部初始化静态成员,必须在类外部定义和初始化每个静态成员,一个静态数据成员只能被定义一次。 类似全局变量。生命周期属于整个程序

类内初始化:

通常情况下,不在类内初始化,然而 如果用const int类型初始化静态成员,要求静态成员必须是字面值常量类型,constexpr ,初始值必须是常量表达式

静态成员能用于某些场景,而普通成员不能:

1.静态数据成员的类型可以就是它所属的类类型。而非静态数据成员则会收到限制,只能声明成它所属类的指针或引用;

class A{
    static A mem1; //正确,静态成员可以是不完全类型
    A        mem2; //错误,数据成员必须是完全类型
};

2.静态成员可以作为默认实参,非静态成员不能,原理this指针,无法真正提供一个对象以便从中获取成员的值。关于默认实参,下面讨论

使用静态成员

使用方式:
使用作用域运算符直接访问静态成员
使用对象,引用,指针访问静态成员

在非静态的成员函数中,可以调用静态的成员或成员函数,因为可以将静态的成员函数或者静态成员当做全局的函数和数据。

注意事项:

1.静态数据成员必须单独初始化,没有对象,也会产生静态数据成员。
2.静态成员不能调用非静态成员函数和非静态数据成员
3.静态数据成员只有一份,且不依赖对象而存在

默认实参:

既可以在函数声明中也可以在函数定义中指定默认实参,但是在一个文件中,只能为一个形参指定默认实参一次;如果在函数定义的形参表中提供默认实参,那么只有在包含该函数定义的源文件中调用该函数时,默认实参才是有效的。

一般情况下,在声明中给出默认实参,在定义中不再给出。
如果默认实参写在定义中,因为只有在该函数定义的源文件中调用该函数时,默认实参才是有效的。
默认实参是一种虽然并不普遍、但在多数情况下仍然适用的实参值。调用函数时,可以省略有默认值的实参。编译器会为我们省略的实参提供默认值。 默认实参是通过给形参表中的形参提供明确的初始值来指定的。程序员可为一个或 多个形参定义默认值。但是,如果有一个形参具有默认实参,那么,它后面所有的形参都必须有默认实参。(有默认实参的,同一往右靠)

三级等保网络拓扑图实战:从零搭建符合标准的医院安全架构 本文详细阐述了如何从零开始设计并搭建符合三级等保标准的医院网络安全架构。文章基于“一个中心,三重防护”的核心框架,深入解析了医院网络分区设计、安全域划分、关键安全设备选型与配置等实战要点,并提供了绘制专业网络拓扑图的技巧与等保测评准备指南,旨在帮助医院IT人员系统化地构建既合规又实用的纵深防御体系。 阅读详情

相关推荐

深入解析Android Thermal框架:从应用层到驱动层的温度管理机制

本文深入解析Android Thermal框架的温度管理机制,从应用层到驱动层详细介绍了温度监测、热状态评估和降温策略执行的全过程。通过分层架构解析和关键组件交互,帮助开发者理解Android设备如何实现高效的温度控制,确保硬件安全并优化性能。

weixin_29303701的博客 256

C++静态成员(static)

由关键字static修饰类体中成员,称为类静态成员(static class member)。类的静态成员为其所有对象共享,不管有多少对象,静态成员只有一份存于公共内存中。静态数据成员被当作该类类型的全局对象。1、设计静态数据成员目的是信息共享和信息交流2、类的静态数据成员为所有类对象所共享,不属于某个具体的实例3、类的静态数据成员必须在类外定义,定义时不添加static关键字,不能在构造函数的初始化列表中创建。

weixin_59179454的博客 6492

在linux上本地大模型部署与推理

您的Python脚本(客户端)可能在您的个人电脑上,而模型服务(服务器)在远程Linux服务器上。如果您的服务器有强大的NVIDIA GPU,并且您对性能有更高的要求(例如需要高吞吐量),vLLM是更好的选择。这种方式无需向公网暴露服务器端口,而是通过加密的SSH通道将服务器的端口“映射”到您的本地电脑上。我们将启动一个API服务器,它会加载您指定的模型,并等待您的代码前来调用。如果您直接在SSH窗口运行上面的命令,一旦您关闭窗口,服务就会停止。这是根据您的原始代码修改的版本,适配本地vLLM服务。

frostmelody 全网同名,大家多多关注呀~ 持续分享优质内容! 2055

【C++入门】静态成员详解(定义、实现原理、使用注意事项)

(1)在类中用static修饰成员,则该成员是静态成员;(2)静态成员是属于类本身的,所有类的对象共享;(3)类的对象都可以访问静态成员,但是所有类的成员访问的静态成员都是同一份静态成员;(4)静态成员在类内部声明时加static声明,在类外定义静态成员时无需添加static修饰;

weixin_42031299的博客 6325

别再瞎改注册表了!实测Win10/Win11远程桌面60帧的正确姿势(附ToDesk对比)

本文深入解析Windows远程桌面60帧优化的科学方法,揭示常见误区并提供实测有效的解决方案。从版本差异到硬件加速,再到第三方工具对比(如ToDesk),帮助用户避开无效的注册表修改,实现流畅的远程桌面体验。

weixin_33738555的博客 343

保姆级教程:用YOLOv8n模型在RKNN和Horizon平台完成目标检测(附C++部署代码与性能实测)

本文提供了一份详尽的YOLOv8n模型在RKNN和Horizon平台上的部署指南,涵盖环境配置、模型优化、跨平台适配及性能调优。通过实战案例和C++部署代码,帮助开发者在嵌入式设备上高效实现目标检测,显著提升推理性能。

weixin_42659194的博客 468

静态类和静态成员

5.静态类和静态成员 1.类的静态成员 1.1、static关键字 (1)static,C语言中有2种用法:static修饰局部变量和全局变量,含义完全不同 (2)static,C++中扩展了第3种用法:静态类、静态成员,含义和前2种完全不同 1.2、什么是静态成员 (1)用static修饰成员变量,即为静态成员变量;用static修饰成员方法,即为静态成员方法 (2)静态成员属于class本身,而不属于对象 1.3、静态成员的特征和实践验证 (1)静态成员变量在类的多个对象中均可访问,且是同一个实体,被多

weixin_44705391的博客 1688

Global Mapper与ArcGIS双剑合璧:自动化与半自动矢量化提取地物轮廓实战

本文详细介绍了如何结合Global Mapper的自动化批量提取与ArcGIS的半自动精细修整功能,高效完成地物轮廓矢量化工作。通过实战案例,阐述了利用Global Mapper快速抓取初步轮廓,再借助ArcGIS的ArcScan等工具进行精细化编辑和优化的完整工作流,有效提升地理信息数据处理效率。

weixin_29284657的博客 119

C++类: 类中的静态成员

类的静态成员与类本身直接相关,而不是类的各个对象保持关联 1. 声明静态成员 在成员声明之前,加上static关键字,使其与类的成员关联在一起。静态成员可以是public或者private的。惊天数据成员的类型可以使用常量、引用、指针、类类型等。 #include <iostream> struct test { public: static int a; // 定义静态成员 static char b; // 定义静态成员 public: static int m

休息一下接着来的博客 701

Mask2former自定义数据集实现滑坡语义分割

先介绍一下这次用的数据集:Bijie Landslide Dataset,是武汉大学在Triplesat卫星上裁剪的数据集,包含770张滑坡(image、mask、dem、边界坐标txt)和2003张非滑坡数据(dem、image)。直接在ade20k修改,按照路径和设置将预处理数据放好,该步骤很快就能结束,打开的图片是全黑的,因为0和1在图片上肉眼较难区分。bijie的数据集可以直接使用,接下去的步骤是1、预处理数据。配置文件修改训练类别和训练类型,由于我们分割的是滑坡,所以进行语义分割。

weixin_57812838的博客 2216

Vins-Fusion 外参camera-imu 标定

Vins-Fusion是一种基于优化的多传感器状态估计器,一大特色是支持实时camera-imu外参校准(相机和IMU之间的旋转)。Vins-Fusion 外参camera-imu校准是利用两帧间计算相机位姿和imu预积分得到位姿,构建最小二乘问题,并通过SVD求解camera-imu外参旋转矩阵。

u010196944的博客 2490

C++ 类的静态成员详解【static】

C++ 类的静态成员详解【static】 本文记录C++中static修饰类成员成为静态成员,其中包括静态成员类别、作用和程序演示。 C++中 static 关键字意为静态,用于修饰类中的成员(包括成员变量和函数)。 用static修饰成员变量,即为静态成员变量;用static修饰成员方法,即为静态成员方法。 成员属于class本身,而不属于对象

Gary_ghw的博客 1万+

Python爬虫实战:逆向工程与异步处理攻克Pinterest无限滚动瀑布流

我们将从零开始,逐步分析其数据接口,构建一个功能完整的爬虫,并深入探讨反爬虫策略的应对、性能优化以及数据存储等高级主题。: 在实际爬取中,你需要先访问一次Pinterest主页,获取初始的Cookie和CSRF Token,然后再发起API请求。: Python爬虫,Pinterest,无限滚动,瀑布流,异步IO,httpx,逆向工程,API接口,动态内容,反爬虫。你会很快发现一些关键的请求模式。:页面初始加载有限内容,随着用户滚动,新的图片块通过AJAX动态加载,实现“永无止境”的浏览。

2201_76125261的博客 552

【C++ 】类的静态成员变量

C++静态成员

lj_caly的博客 659

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

C++类中的静态成员函数以及静态成员变量

C++类中的静态成员函数以及静态成员变量

森明帮大于黑虎帮的博客 8371

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

C++类中的静态成员

静态成员变量、静态成员函数

gemluoye的博客 1108

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

C++ 类中的静态成员

为什么要有类的静态成员? 我们学习一个知识点,首先想到的是为什么要有这个东西的存在呢?对于C++ 类的静态成员存在的理由如下: 有的时候类需要它的一些成员与类本身无关,而不是与类的各个对象保持关联。 例如:一个银行账户类型类可能需要一个数据成员来表示当前基准利率。在此例中,我们希望利率与类关联,而非与类的每个对象关联。从实现的效率的角度来看,没必要每个对象都存储利率信息。而且更加重要的是,一旦利...

Lee's site 1731

C++ 类 静态成员

和其他成员函数一样,静态成员函数即可以在类的内部定义,也可以在类的外部定义。在类的外部定义时,不能重复static关键字,static关键字只出现在类的内部。因为静态数据成员不属于类的任何一个对象,所以并不是在创建类的对象时被定义的,也就是说它不是在构造函数中被初始化的。一般来说,不能在类的内部初始化静态成员,必须在类的外部定义和初始化每个静态数据成员。在类的外部定义静态数据成员的方法和在类外部定义成员函数差不多,需要指定成员类型名,然后时类名、作用域运算符以及成员数据自己的名字。

xiaozhu_daidai的博客 1751

C++中类的静态成员

1.Cpp中类的静态成员 可以使用static关键字来把类成员定义为静态的。当我们声明类的成员为静态时,这意味着无论创建多少个类的对象,静态成员都只有一个副本。静态成员在类的所有对象中是共享的。如果不存在其他的初始化语句,在创建第一个对象时,所有的静态数据都会被初始化为零。我们不能把静态成员的初始化放置在类的定义中,但是可以在类的外部通过使用范围解析运算符::来重新声明静态变量从而对它进行初始化...

CurryCoder的个人博客 486

c++类的静态成员

静态成员 由关键字static修饰说明的类成员,成为静态类成员(static class member)。虽然使用static修饰说明,但与函数中的静态变量有明显差异。类的静态成员为其所有对象共享,不管有多少对象,静态成员只有一份存于公用内存中。类的静态成员分为静态成员变量和静态成员函数。 1 静态成员变量 在类定义中,用关键字static修饰的数据成员为静态数据成员。 该类产生的所有对象共享系统为静态成员分配的一个存储空间,而这个存储空间是在编译时分配的,在定义对象时不再为静态成员分配空间,即静态成员的大

Anurmy的博客 1019

C++ Primer 类的静态成员

专栏简介:本专栏主要面向C++初学者,解释C++的一些基本概念和基础语言特性,涉及C++标准库的用法,面向对象特性,泛型特性高级用法。通过使用标准库中定义的抽象设施,使你更加适应高级程序设计技术。希望对读者有帮助!

专注于C/C++编程语言的博客,如果读者对C/C++语言有任何需要咨询的可以私信联系! 908

C++ 类的静态成员详细讲解

在C++中,静态成员是属于整个类的而不是某个对象,静态成员变量只存储一份供所有对象共用。所以在所有对象中都可以共享它。使用静态成员变量实现多个对象之间的数据共享不会破坏隐藏的原则,保证了安全性还可以节省内存。 静态成员的定义或声明要加个关键static。静态成员可以通过双冒号来

MoreWindows Blog 11万+

C++ 静态成员的类内初始化

C++ 静态成员的类内初始化 一般来说,关于C++类静态成员的初始化,并不会让人感到难以理解,但是提到C++ 静态成员的"类内初始化"那就容易迷糊了。 我们来看如下代码: 1 //example.h 2 #include<iostream> 3 #include<vector> 4 using namespace std; 5 6 class Exam...

Poo_Chai的博客 1117

C++--类的静态成员

类的静态成员static

学无止境 2108

C++——类——静态成员

C++——类中的静态成员,函数和变量及其相关知识点。

qq_42106610的博客 399

C++ 类的静态成员

声明静态成员 我们通过在成员的声明之前加上关键字static使得其与类关联在一起。和其他成员一样,静态成员可以是public的或private的。静态数据成员的类型可以是常量、引用、指针、类类型等。 举个例子,我们定义一个类,用它表示银行的账户记录 class Account { public: void calculate() { amount += amount * interestRate; } static double rate() {

恋恋风辰的技术博客 642
上一篇: 仿MoDuo封装简易C++网络库
下一篇: C++运算符重载
Tony L.Du
博客等级 码龄11年 73粉丝 156原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值