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

C++中静态成员变量和静态成员函数的用法 昨天在修改项目函数功能时,在其中一个类中添加了一个静态成员变量和两个静态成员函数,结果在链接时出现一个非常典型的错误:“The follwing symbols referenced in processor “p0” could not be resolved:Class:var1…”。我知道这是在链接的时候没有找到变量var1的定义,没有为变量var1分配内存,但是我感到奇怪的是我在类中定义了... 阅读详情

1)C++入门级小知识,分享给将要学习或者正在学习C++开发的同学。

2)内容属于原创,若转载,请说明出处。

3)提供相关问题有偿答疑和支持。

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


 

注意:
静态成员变量在类中仅仅是申明,必须要在类的外部进行初始化,否则无法通过编译;
如上面的:int A::m_data = 100;此步骤是必须的

关于静态成员函数,可以总结为以下几点:
1、出现在类体外的函数定义不能指定关键字static;
2、静态成员之间可以相互访问,包括静态成员函数访问静态数据成员和访问静态成员函数;
3、非静态成员函数可以任意地访问静态成员函数和静态数据成员;
4、静态成员函数不能访问非静态成员函数和非静态数据成员;
5、静态成员函数没有this指针的额外开销,因此静态成员函数与类的全局函数相比速度上会有少许的增长;
6、调用静态成员函数,可以用成员访问操作符(.)和(->)为一个类的对象或指向类对象的指针调用静态成员函数.

C++静态成员变量和静态成员函数使用总结 C++静态成员变量和静态成员函数使用总结: 一.静态成员变量:          类体中的数据成员的声明前加上static关键字,该数据成员就成为了该类的静态数据成员。和其他数据成员一样,静态数据成员也遵守public/protected/private访问规则。同时,静态数据成员还具有以下特点:  1.静态数据成员的定义。          静态数据成员实际上是类域中的全局变量。所以 阅读详情

相关推荐

微信小程序使用TCP通信

最终目的:在微信小程序内实现对局域网发起TCP通信实现步骤:建立TCP服务 + 小程序发起通信。

Big_YiFeng的博客 5612

c++ ——静态成员变量和静态成员函数

c++ 静态成员变量用static 关键字来声明,是整个类的数据成员,其存储不占用某个具体对象的空间,其存储在静态存储区。 c++ 静态成员函数用static 关键字来声明,用于处理静态成员变量,可以用类名来调用,也可以用对象名来调用。 测试代码: #include <iostream> using namespace std; class Point{ public: Po...

夜风的博客 3643

C语言实现AES加解密

C语言实现AES加解密 #include<stdio.h> #include<string.h> #include<time.h> #include<windows.h> #define Nb 4 //数据块行数 #define Nk 4 //密码块行数 #define Nr 10 //轮加密次数 unsigned char RoundKey[4*Nb*(Nr+1)]; //轮密钥 unsigned char Key[17];

qq_44310495的博客 8891

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

3.静态成员函数的地址可用普通函数指针储存,而普通成员函数地址需要用类成员函数指针来储存。1.静态成员函数不能调用非静态成员函数,但是非静态成员函数可以调用静态成员函数。2.静态成员函数没有this指针,也就是说静态成员函数不能使用const修饰符。

物是人非,结局始终不美 1万+

GD32F470实战:如何用EXMC+SDRAM为LVGL打造超大内存池(附完整配置代码)

本文详细介绍了如何利用GD32F470的EXMC接口与SDRAM深度整合,为LVGL构建高性能内存解决方案。通过硬件架构设计、EXMC接口配置、高级内存管理策略及LVGL性能优化技巧,开发者可以突破微控制器内存限制,实现高分辨率显示和复杂动画效果。附完整配置代码,助力嵌入式GUI开发。

rrr55的博客 548

2023华为od机试C卷【推荐多样性】Java&Go 实现

推荐多样性需要从多个列表中选择元素,一次性要返回N屏数据(窗口数量),每屏展示K个元素(窗口大小),选择策略1.各个列表元素需要做穿插处理,即先从第一个列表中为每屏选择一元素,再从第二个列表中为每屏选择一个元素,依次类推2.每个列表的元素尽量均分为N份,如果不够N个,也要全部分配完,

MISAYAONE的博客 2183

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

C++静态成员变量和静态成员函数 数据成员可以分静态变量、非静态变量两种.  静态成员:静态类中的成员加入static修饰符,即是静态成员.可以直接使用类名+静态成员名访问此静态成员,因为静态成员存在于内存,非静态成员需要实例化才会分配内存,所以静态成员不能访问非静态的成员..因为静态成员存在于内存,所以非静态成员可以直接访问类中静态的成员.  非成静态员:所有没有加Static的成

小李的专栏 5923

日常工作记录---在虚拟机中进行slam建图

   今天是10月24号,首先祝各位程序员们节日快乐!!!    最近一周由于实习的原因,对ROS的探索学习,停滞了一段时间,所以今天也就没什么大的进展,本篇文章仅仅记录一下,我在虚拟机中进行slam建图可行性验证的过程,本篇文章同样使用古月学院《如何在Gazebo中实现阿克曼转向车的仿真》的课程资料来进行验证    下面各条之间并没有严格的顺序关系,每一条都是独立的,都是我在验证过程中的经验或者记录:    1、在运行roslaunch bringup racecar_gazebo_rviz.lau

慕羽★的博客 4829

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

定义时不添加static关键字,类中只是声明3.类静态成员即可用。

2301_76606232的博客 892

DCNv4+YOLOv8:2024最新可变形卷积赋能目标检测,从原理到实战的科研级优化指南

从理解DCNv4“自适应变形卷积核”的核心思想,到亲手将其嵌入YOLOv8并验证在复杂场景的检测效果,再到基于此探索属于自己的科研与工程方向——这个过程能让你深刻理解目标检测中“特征自适应提取”的核心价值。现在就开始行动,相信你会在目标检测的“自适应特征提取”之路上,走出一条属于自己的技术路径。实验通常会证明:嵌入DCNv4后,YOLOv8在复杂场景下的检测精度提升3-5个百分点,尤其是小目标和遮挡目标的AP提升更为明显,而推理速度仅下降5%-10%(可通过模型量化进一步优化)。2024年最新推出的。

m0_64661770的博客 269

NSIS教程(6): 使用第三方插件

NSIS内置了很多指令,这些指令可以满足我们基本需求,但难免会遇到NSIS没有内置的功能,如进程操作,后台运行(即多线程),7z压缩等等,这个时候我们就需要借助第三方插件来满足我们所需要的功能了。 一、插件获取 NSIS官方收录插件的网址是:http://nsis.sourceforge.net/Category:Plugins,我们可以在这个网站上查找和下载我们需要的插件,该网站上针对每

while(1) { smile(); } 9万+

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

注意下面几点:调用一个对象的非静态成员函数时,系统会把当前对象的起始地址赋给 this 指针。而静态成员函数并不属于某一对象,它与任何对象都无关,因此。

Iamme 887

Allegro负片层不显示反盘的原因和解决办法

在用Allegro做PCB设计的时候,负片设计是较为常用的一种方式,有时会出现打开负片层却看不到反盘的情况,如下图。如何才能看到反盘显示的效果,具体操作如下。负片层不显示反盘的原因和解决办法。L2层仍然只能看到盘。

weixin_54787054的博客 2161

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

C++中类的静态成员变量 以一个简单的例子来引入C++中类的静态成员变量! 假入客户给你提了一个需求: 统计在程序运行期间某个类的对象的数目 保证程序的安全性(不能使用全局变量) 随时可以获取当前对象的数目 你或许会想到用类的成员变量来做计数值。写出的代码可能类似下面的代码: #include <stdio.h> class Test { private: int mCo...

selfsongs 638

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

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

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

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

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

u014583317的博客 551

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

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

学习笔记 静态成员变量 要点 编译阶段分配内存 所有对象共享数据 通过对象,通过类名都可访问 静态成员变量如果通过类名访问不会调用构造函数,所以一般不在构造函数中初始化static,e.g. int classname::m_Age = 10; 可以有权限控制(类中定义公私有),一般在类内声明,类外初始化(通过类名访问) 静态成员函数 要点 可以访问静态成员变量,不可以访问普通成员变量 普通成员函数都可以访问 通过对象,通过类名都可访问,e.g. classname::func(); 可以有权限控制(

Mr_Bobcp的博客 1万+

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

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

technologyleader的专栏 225

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

静态成员变量和静态成员函数 static关键字的由来 有没有一个属性是属于所有的对象的。 代码如下: class Test { public: int getC() { return a; } private: int c; static int a; }; //给类中的静态成员赋值 int Test::a = 10; int main() { Test t1; cout &l...

weixin_43916755的博客 250

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

类成员中用 static 声明的为 静态成员,又分为 静态成员变量 和 静态成员函数 。 class Person{ public: //类的静态成员变量(属性) static int Num; //静态成员函数 static void changeParam(int param){ } } 静态成员变量 静态成员变量,属于某个类,所有对象共享。 无论建立了...

weixin_42894555的博客 587

十二. C++静态成员变量和函数

静态成员 在类定义中,它的成员(包括成员变量和成员函数),这些成员可以用关键字static声明为静态的,称为静态成员。 不管这个类创建了多少个对象,静态成员只有一个拷贝,这个拷贝被所有属于这个类的对象共享。 静态成员变量 在一个类中,若将一个成员变量声明为static,这种成员称为静态成员变量。与一般的数据成员不同,无论建立了多少个对象,都只有一个静态数据的拷贝。静态成员变量,属于某个类,所有对象共享。 静态变量,是在编译阶段就分配空间,对象还没有创建时,就已经分配空间。 静态成员变量必须在类中

ouyangyiwen的博客 182

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

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

qq_40280673的博客 2652

C转C++:static静态成员变量和静态成员函数

数据类型+类名::静态成员变量 = 初始值。这种方法必须在函数名中加上&

vs_666的博客 650

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

类的静态成员有两种:静态成员变量和静态成员函数。静态成员变量就是在定义时前面加了 static 关键字的成员变量;静态成员函数就是在声明时前面加了 static 关键字的成员函数。 下面的 CRectangle 类就有两个静态成员变量和一个静态成员函数: class CRectangle{ private: int w,h; static int nTotalArea; //静态...

m0_37891391的博客 295
上一篇: c++单例模式
下一篇: c++常函数
EmLinuxDeveloper
博客等级 码龄2年 308粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值