C++类静态成员与类静态成员函数

C++中在类外部定义的成员函数 类的成员函数可以在类内部定义,也可以在类的外部定义。当定义在类的外部时,需要同时提供类名和函数名。 1 类外部定义成员函数 代码如下所示 classMyClass{ voidmyFunc(); inti; }; voidMyClass::myFunc() { i = 1; } 此时类MyClass的成员函数myFunc()在MyClass类之外定义。虽然myFunc()函数看上去没有在类的作用域之内,但是由于提供了MyClass类,实际上这时myFunc()就已经在类的作用域之... 阅读详情

当将类的某个数据成员声明为static时,该静态数据成员只能被定义一次,而且要被同类的所有对象共享。各个对象都拥有类中每一个普通数据成员的副本,但静态数据成员只有一个实例存在,与定义了多少类对象无关。静态方法就是与该类相关的,是类的一种行为,而不是与该类的实例对象相关。

    静态数据成员不能在类中初始化,也不可在类体内进行赋值,因为它是被所有该类的对象所共享的。静态成员可以被初始化,但只能在类体外进行初始化。
    一般形式:
    数据类型类名::静态数据成员名=初值

举个例子:

class Myclass
{
private:
        int a,b,c;
        static int Sum;    //声明静态数据成员
public:
        Myclass(int a,int b,int c);
        void GetSum();
};
int Myclass::Sum=0;       //定义并初始化静态数据成员
Myclass::Myclass(int a,int b,int c)
{
        this->a=a;
        this->b=b;
        this->c=c;
        Sum+=a+b+c;
}
void Myclass::GetSum()
{
        cout <<"Sum=" <<Sum <<endl;
}
int main(void)
{
        Myclass me(10,20,30);
        me.GetSum();
        system("pause");
        return 0;
}


 

关于静态成员函数,可以总结为以下几点:

1.静态成员之间可以相互访问,包括静态成员函数访问静态数据成员和访问静态成员函数;
非静态成员函数可以任意地访问静态成员函数和静态数据成员;
静态成员函数访问非静态成员函数和非静态数据成员的方式---
静态函数成员必须通过对象名来访问非静态数据成员。言下之意,我们可以通过传入this指针(或一个对象名)的方式访问非静态成员,又或者在静态成员函数内new一个对象,通过其调用非静态成员。
2.由于没有this指针的额外开销,因此静态成员函数与类的全局函数相比速度上会有少许的增长;
3.调用静态成员函数,可以用成员访问操作符(.)和(->)为一个类的对象或指向类对象的指针调用静态成员函数,
当同一类的所有对象使用一个量时,对于这个共用的量,可以用静态数据成员变量,这个变量对于同一类的所有的对象都取相同的值。静态数据成员的用途之一是统计有多少个对象实际存在。

4.静态成员仍然遵循public,private,protected访问准则。
5.静态成员函数没有this指针,它不能返回非静态成员,因为除了对象会调用它外,类本身也可以调用。

    静态函数成员必须通过对象名来访问非静态数据成员。言下之意,我们可以通过传入this指针(或一个对象名)的方式访问非静态成员,又或者在静态成员函数内new一个对象,通过其调用非静态成员。
【C++深度剖析学习总结】 20 类的静态成员变量和类的静态成员函数 前言 经常有小伙伴问我,你是做C/C++的,那学C语言可以做什么呢?尤其是还在学校的同学,感觉自己学了很久,什么也做不了,一度怀疑自己是不是不适合程序员这个方向。 开始我都是直接说可以开发嵌入式啊,做操作系统啊,开发数据库啊等等,说到这,其实大家就应该明白了,C语言是接近底层的,他的很多应用都是处在摸不着看不见的后台,这对于初学编程的同学确实太不友好了,大家都喜欢所见即所得的效果,要不pytho... 阅读详情

相关推荐

测站坐标系、地心非惯性系、经纬高互转

目录 一、经纬高转直角坐标系互转 1.1 python代码 二、wgs84转cgcs2000的转换矩阵如下 虽然cgcs2000与wgs84差别很小,但是我比较较真,还是做了两个坐标系的转换。 一、经纬高转直角坐标系互转 此处可参考链接(百度文库用手机浏览器可以打开看全部的): (1)第四章地球椭球及其数学详解 (2)第四章椭球数学变换16节 (3)大地测量学基础[1](7)(控制) 转换公式如下: LBH转XYZ: a为半长轴,e为偏心率 XYZ转LBH: a为半长轴

${王小贱}的博客 2万+

C++学习总结(十二)——友元函数,友元类

一.友元函数 用于访问私有数据和私有函数。 #include #include class myclass { private: int num=0; void go() { system("notepad"); } void friend showdata(myclass *m) { m->go(); std::cout num << std::endl; }

IM_GD 428

ThingsBoard 3.1.1版本在window本地运行之TB-Gateway服务搭建(三)

TB-gateway服务是TB不可或缺的部分,很多的协议都需要TB-gateway来做分类处理,今天我们就来做TB-Gateway服务搭建。

晚点遇见你,余生都是你! 2474

C++ 友元函数,接口函数实现私有成员的访问

1、友元函数#include using namespace std; class MyClass { public://访问修饰符 int a;protected: void fun() { cout

qq_52119661的博客 1410

VS Code+ESP-IDF开发避坑指南:头文件标红报错的5种解决方法(附CMakeLists.txt配置)

本文详细解析了在VS Code中使用ESP-IDF开发ESP32时头文件标红报错的5种解决方法,包括环境配置检查、CMakeLists.txt规范配置、路径解析策略、缓存清理技巧和高级调试手段。特别提供了CMakeLists.txt的实战配置示例,帮助开发者彻底解决头文件路径问题,提升开发效率。

weixin_33670786的博客 560

在 SAP BAS 中扩展标准 SAP Fiori 应用并部署到 ABAP 环境的完整实践指南

SAPUI5 Adaptation Project 摘要(148字) SAPUI5 Adaptation Project 提供了一种高效扩展标准Fiori应用的方式,通过创建应用变体(Application Variant)实现差异化定制。开发者可在SAP BAS中使用可视化编辑器修改UI元素(如隐藏字段、调整表格布局、添加按钮等),而无需重写业务逻辑。变体部署到ABAP环境后,可与标准应用并行使用,且能随原应用升级保持同步。典型应用场景包括为不同用户角色定制简化界面或增强特定功能,既满足个性化需求,又保留

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 185

【C++】静态成员函数 ( 静态成员函数概念 | 静态成员函数声明 | 静态成员函数访问 | 静态成员函数只能访问静态成员 )

一、静态成员函数简介 1、静态成员函数概念 2、静态成员函数声明 3、静态成员函数访问 4、静态成员函数只能访问静态成员 二、代码示例 - 静态成员函数

让 学习 成为一种 习惯 ( 韩曙亮 の 技术博客 ) 1万+

电子技术课程设计:声音音量峰值检测显示系统设计

本文介绍了声音音量峰值检测显示系统的设计方案。系统采用分立元件设计,不使用单片机和集成运放,包含电源模块、声音采集放大电路、峰值检测保持模块、比较器、A/D转换及显示控制等部分。麦克风信号经两级晶体管放大后,通过二极管-电容电路检测峰值并保持,再经A/D转换显示为数字值(0000-9999)。系统采用9V电池供电,包含启动/清除控制功能,能指示声音过低或过高状态。详细阐述了各模块电路设计、参数计算和仿真验证,并提供了完整的原理图和PCB布线方案。该系统实现了声音峰值电压的准确检测与数字显示功能。

huanghm88的专栏 258

友元函数的简单说明

首先友元函数为了方便一个类去访问另一个类中的成员函数和成员变量,需要使用关键字friend在函数的声明时,友元函数不属于任何类的成员函数,它是在类外定义的全局函数。可以在本类中声明友元函数,声明如下: friend void printMsg(); 然后在类外定义void printMsg(myClass *s)函数。在此函数中可以通过形参myClass类对象或指针,引用来访问类myClass的成员变量,这里对于任何访问权限的成员变量都可以访问。 还可以使用另一种方式,用一个类的成员函数作为另一个类的友元

肩上风骋的博客 744

YOLOv11改进策略【Head】| AFPN渐进式自适应特征金字塔,增加针对小目标的检测头(附模块详解和完整配置步骤)

一、本文介绍 本文利用AFPN对YOLOv11的网络模型进行优化提升。AFPN采用渐近式融合及自适应空间融合操作。通过渐近式架构,逐步整合不同层级特征,有效避免非相邻层级间因语义差距过大导致的信息丢失或降级问题,确保在多尺度特征融合过程中既能保留高层语义信息,又能融入低层细节特征。本文将AFPN应用于YOLOv11中,并配置了针对小目标的检测头,能显著增强模型对不同尺度目标的检测能力,使其在复杂场景下更聚焦于目标物体特征,减少背景等无关信息的影响。 专栏目录:YOLOv11改进目录一览 | 涉及卷积层、

Limiiiing的博客 2718

数仓建模—数据语义层

如今,企业产生大量数据,需要以正确的方式进行分析才能做出重要决策。数据可能来自多个来源并采用不同的格式,这使得清楚地了解其含义和重要性成为一项挑战。这就是语义层的用武之地。语义层存在于数据仓库和最终用户使用的应用程序之间。它为用户提供了简化且一致的数据视图,无论其基础数据源的复杂性如何。该逻辑层有助于映射物理数据结构以创建概念数据模型。它定义了数据元素之间的所有规则和关系,并以业务术语提供了数据的通用词汇表。然后,用户可以轻松地与数据进行交互,而无需了解其数据源的技术知识。

7万+

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

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

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

DeepCAD: 使用深度自监督学习技术在Python中进行钙成像去噪的全面指南

钙成像是一种用于观察神经活动的技术,通过检测细胞内钙离子的变化来推断神经元的活动。由于其高时空分辨率和对活体组织的适应性,钙成像已经成为神经科学研究中的重要工具。然而,钙成像数据往往伴随着各种噪声,这些噪声可能来自于设备、生物样本或环境。为了获得准确的神经活动信息,去噪是非常关键的。深度自监督学习是一种使用未标记数据进行训练的机器学习方法。与传统的监督学习不同,它不需要大量的标记数据,而是通过学习数据的内部结构和模式来提取有用的特征。DeepCAD是一个基于深度自监督学习的钙成像去噪工具。

qq_38334677的博客 758

C++ 类静态函数访问类非静态成员变量

最近做网络通信,其中需要做个架构包含回调函数,里面有个静态函数,网络数据传入这个静态函数,然后再让这个静态函数调用回调函数把数据传到另外一个类。3. 在class的cpp声明这个静态类,在构造函数里把当前类指针赋值到静态类的指针即可。

z15f34的博客 709

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

c++ 类的静态成员函数

public:// 声明静态成员函数// 定义静态成员函数(不需要 static 关键字)// 函数实现静态成员函数是与类本身关联的函数,不依赖于类的实例。它们可以直接通过类名调用,主要用于操作静态成员变量或提供与类相关的工具函数。合理使用静态成员函数可以提高代码的模块化和可读性。

曾经也曾立志 617

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

C++类中的静态成员与静态函数

 C++类中的静态成员有一个非常好的功能,那就是无论类定义了多少个对象,这些对象始终都共同使用这一个静态成员例如:  class A{   static int num;A(){num++}     } int A::num=0;  就会有如下效果:  A  a,b,c,d;     cout可以看出,在每个对象中的num成员都只有一个副本。在内存中也是如此,初始化abcd时并没有分配新的内存。在

6469

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

c++类的静态成员及静态成员函数

C++ 类的静态成员及静态成员函数         对象与对象之间的成员变量是相互独立的。要想共用数据,则需要使用静态成员和静态方法。   只要在类中声明静态成员变量,即使不定义对象,也可以为静态成员变量分配空间,进而可以使用静态成员变量。(因为静态成员变量在对象创建之前就已经被分配了内存空间)   静态成员变量虽然在类中,...

qq_42656351的博客 228

C++-类-静态成员1:静态成员变量、静态成员函数、const静态成员属性

在类定义中,它的成员(包括成员变量和成员函数),这些成员可以用关键字static声明为静态的,称为静态成员。不管这个类创建了多少个对象,静态成员只有一个拷贝,这个拷贝被所有属于这个类的对象共享。

u013250861的博客 1024

C++中类和对象的静态成员变量和静态成员函数(附代码)

静态成员变量:存储数据,共享给整个类的所有对象,适合需要持久化或全局共享的数据。 静态成员函数:不需要对象支持即可访问,用于操作静态成员变量或提供独立功能的工具方法。

qq_40280673的博客 2652

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

关键字static可以用于说明一个类的成员或函数,当把一个类的成员说明为static时,无论这个类创建了多少对象,这些对象都共享这个static成员。 静态成员与静态成员函数都属于整个类,并不属于对象的。 调用静态成员(变量/函数) 类名::成员(); 静态成员函数不能直接调用非静态成员: 以下文字与理解摘自 来自:https://www.cnblogs.com/MATU/p/3818163...

TomCat的播客 144

C++类的静态成员变量和静态成员函数

1.静态成员变量 1)普通成员变量  通过对象名能够访问public成员变量  每个对象的普通成员变量都是专属的,不能在对象之间共享 2)静态成员变量  静态成员变量属于整个类所有,所有对象共享类的静态成员变量  静态成员变量的生命周期不依赖于任何对象  可以通过类名和对象名访问public静态成员变量 3)静态成员变量的定义  静态成员变量在类的内部声明,声明时直接通过static关键字修饰  静态成员变量在类的外部定义与初始化,语法规则为Type ClassName::VarName = value;

u014583317的博客 551

c++ 类的静态成员变量和静态成员函数

1. 静态成员变量 先来回顾一下普通成员变量 通过对象名能够访问public成员变量 每个对象的普通成员变量都是专属的,不能在对象之间共享 在C++中还可以定义静态成员变量 静态成员变量属于整个类所有,所有对象共享类的静态成员变量 静态成员变量的生命周期不依赖于任何对象 可以通过类名和对象名访问public静态成员变量 静态成员变量的定义 静态成员变量在类的内部声明,声明时直接...

technologyleader的专栏 225

C++ 类中静态成员变量和静态函数

C++ 静态成员变量和静态函数

u012858839的博客 1556
下一篇: MFC ActiveX的创建和调用
ruby_doudou
博客等级 码龄12年 3粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值