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

一、静态成员变量

静态成员变量使用static修饰的成员变量。静态成员变量不属于某一个对象,而是属于整个类,因此静态成员变量不能设置缺省值,因为缺省值是给予初始化列表用于初始化对象的。

静态成员变量需要再类内声明,类外定义。

class A {
public:static int _n;//类内声明
};int A::_n = 0;//类外定义

静态成员变量属于整个类,因此静态成员变量既可以用对象访问,也可以使用类访问(公有属性情况下)。

int main()
{A aa1;A aa2;cout << aa1._n << endl;//对象访问cout << aa2._n << endl;//对象访问cout << A::_n << endl;//类访问return 0;
}

 如果静态成员变量是私有属性的,可以设置Get接口。

class A {
private:static int _n;//类内声明
public:int GetN(){return _n;}
};
int A::_n = 0;//类外定义
int main()
{A aa1;A aa2;cout << aa1.GetN() << endl;cout << aa2.GetN() << endl;return 0;
}

二、静态成员函数

静态成员函数就是用static修饰的成员函数。静态成员函数与普通成员函数不同点在于,静态成员函数没有this指针,因此静态成员函数只能访问静态成员变量,不能访问普通成员变量。

class A {
private:static int _n;//类内声明
public:static int GetN()//静态成员函数{return _n;}
};
int A::_n = 0;//类外定义
int main()
{A aa1;A aa2;cout << aa1.GetN() << endl;cout << aa2.GetN() << endl;cout << A::GetN() << endl;return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/721947.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机网络 网络原理之Http

目录 1 前言2 什么是http的一次交互&#xff1f;3 理解“协议”二字4 认识URL4.1 简介4.2 URL的编码和解码(urlencode和urldecode) 5 抓包工具 fiddler6 http和https的区别7 http 头8 HTTP 状态码9 常见的 Http 服务器 1 前言 为什么要了解Http原理呢&#xff1f;因为http原理…

前端知识学习之proxy代理对象

前端proxy代理对象 1.学习背景 学习vue3过程中&#xff0c;发现vue3相比于vue2的最大优势在于&#xff0c;尤雨溪大佬在vue3中使用proxy 代理对象&#xff0c;vue2中使用的双向绑定Object.defineProperty&#xff0c;这两者有什么区别 2.Object.defineProperty 使用方法&am…

ECMAScript语法

什么是ECMAScript ECMAScript 是一种由 ECMA国际&#xff08;前身为欧洲计算机制造商协会&#xff09;通过 ECMA-262 标准化的脚本程序设计语言。 ECMAScript 是一种可以在宿主环境中执行计算并能操作可计算对象的基于对象的程序设计语言。ECMAScript 最先被设计成一种 Web 脚…

java使用mapper操作mysql

上半部分搭建springboot 简单使用数据库查询 添加链接描述 在impl接口实现操作 如 package com.service.impl; import com.dao.UserMapper; import com.pojo.User; import com.service.UserService; import org.springframework.beans.factory.annotation.Autowired; import…

基于SSM SpringBoot vue个人博客网站

基于SSM SpringBoot vue个人博客网站 系统功能 首页 图片轮播 博客文章 搜索 登录注册 论坛 留言板 个人中心 我的收藏 后台管理 登录 个人中心 博客分类管理 博客文章管理 论坛管理 系统管理 管理员管理 注册用户管理 开发环境和技术 开发语言&#xff1a;Java 使用框架:…

实战经验分享:如何优化即时通讯应用的性能?

在当今移动互联网时代&#xff0c;即时通讯应用如雨后春笋般涌现&#xff0c;用户对即时通讯应用的性能和体验要求也越来越高。作为即时通讯开发领域的专家&#xff0c;我将分享一些优化即时通讯应用性能的实战经验&#xff0c;帮助开发者提升应用质量和用户满意度。 1. 优化网…

【Leetcode每日一刷】贪心算法| 45.跳跃游戏 II

1、45.跳跃游戏 II &#x1f984;解题思路&#xff1a; 这题还是比【55.跳跃游戏】难一些的。第一个版本只是说&#xff0c;求跳跃的范围&#xff0c;覆盖到了终点即可。这题则是&#xff0c;能保证覆盖范围到达终点&#xff0c;求的是最少跳几次&#xff0c;跳到终点。 这题…

289页初中级前端题助你拿下Offer,终局之战

HTML、CSS、JS三大部分都起什么作用&#xff1f; HTML内容层&#xff0c;它的作用是表示一个HTML标签在页面里是个什么角色&#xff1b;CSS样式层&#xff0c;它的作用是表示一块内容以什么样的样式&#xff08;字体、大小、颜色、宽高等&#xff09;显示&#xff1b;JS行为层…

Redis缓存【重点】

参考链接 https://xiaolincoding.com/redis/cluster/cache_problem.html#%E7%BC%93%E5%AD%98%E9%9B%AA%E5%B4%A9 目录 缓存雪崩大量数据同时过期Redis 故障宕机 缓存击穿第一种方案&#xff0c;非法请求的限制第二种方案&#xff0c;缓存空值或者默认值第三种方案&#xff0c;使…

01、MongoDB -- 下载、安装、配置文件等配置 及 副本集配置

目录 MongoDB -- 下载、安装、配置 及 副本集配置启动命令启动 mongodb 的服务器&#xff08;单机和副本集&#xff09;启动单机模式的 mongodb 服务器启动副本集的 3 个副本节点&#xff08;mongodb 服务器&#xff09; 启动 mongodb 的客户端 MongoDB 下载MongoDB 安装1、解压…

App自动化测试笔记(一):搭建环境

一、三个环境 1、android模拟器&#xff1a;模拟安卓手机 2、androidSDK:android SDK给你提供开发测试所必须android API类库 3、java&#xff1a;android底层是c、c语言&#xff0c;应用层是java语言 二、java环境搭建 java安装 安装jdk-8u151-windows-x64.exe 配置环境变量…

JAVA的学习日记DAY1

JAVA的学习日记&#xff08;2024.3.1&#xff09;&#xff08;b站韩顺平老师课程学习笔记版&#xff09; ps:捡起忘光光的Java语言 Sublime //1. public是公有&#xff0c;class是类 //2. public class Hello表示Hello是一个类&#xff0c;是一个public公有的类 //3. Hello{…

MySQL-索引:聚集索引、覆盖索引、组合索引、前缀索引、唯一索引(附带例子解释)

MySQL-索引&#xff1a;聚集索引、覆盖索引、组合索引、前缀索引、唯一索引&#xff08;附带例子解释&#xff09; 1、聚集索引2、覆盖索引3、组合索引4、前缀索引5、唯一索引6、再深入理解覆盖索引7、拓展 1、聚集索引 在数据库中&#xff0c;聚集索引决定了表数据行的物理存…

Linux:修改文件权限

简介 在Linux系统中&#xff0c;权限管理是文件和目录安全性的核心。文件权限是非常重要的&#xff0c;它们决定了哪些用户可以读取、写入或执行文件。 文件权限 用户类别 每个文件和目录都与三种类型的权限相关联&#xff0c;分别针对三个不同的用户类别&#xff1a; 所有…

【Redis | 第二篇】Redis的五种数据类型和相关命令

文章目录 2.Redis的数据类型和相关命令2.1常用数据类型2.2特性和用途2.2.1字符串&#xff08;String&#xff09;2.2.2哈希&#xff08;Hash&#xff09;2.2.3列表&#xff08;List&#xff09;2.2.4集合&#xff08;Set&#xff09;2.2.5有序集合&#xff08;Sorted Set&#…

将组件直接绑定到vue实例上面的写法

怎么将组件直接绑定到vue实例上面&#xff1f; 在实际开发过程中&#xff0c;有多种使用vue组件的方式&#xff0c;有在组件中引入&#xff0c;直接挂载到vue进行全局使用&#xff0c;也有直接挂载到vue实例上面当成vue的一个属性来使用的。下面通过代码来实现将组件直接绑定到…

SwiftUI中stroke属性的使用

在 SwiftUI 中&#xff0c;可以使用 stroke 属性来绘制形状的轮廓线。stroke 属性接受一个 Color 类型的参数&#xff0c;指定轮廓线的颜色。 以下是一个示例代码&#xff0c;演示如何在 SwiftUI 中使用 stroke 属性绘制矩形的轮廓线&#xff1a; import SwiftUIstruct Conte…

linux小记(1)

基本概念&#xff1a;不依靠扩展名来区分文件类型 好处&#xff1a;除了文本文件其他所有windows文件都无法在Linux下运行&#xff0c;包括病毒木马。 坏处&#xff1a;所有的软件都需要对linux单独开发 习惯用后缀来区分文件&#xff0c;方便管理。 -压缩包&#xff1a;*.…

第十五届蓝桥杯软件赛模拟赛第三期(c++,python,java通用)

注&#xff1a;1.填空题用最简单的方式&#xff08;暴力递归或枚举&#xff09;得出答案即可。 2.编程题若无思路可用暴力递归或枚举也能拿到不少的分数。 第一题 【问题描述】 请问 2023 有多少个约数&#xff1f;即有多少个正整数&#xff0c;使得 2023 是这个正整数的整数倍…

【ESP32 IDF】UART串口

文章目录 前言一、数据传输的基本概念1.1 串行与并行通信1.2 单工/半双工/全双工通信1.3 同步/异步通信1.4 波特率1.5 UART 四要素 二、串口的使用2.1 配置UART串口2.2 配置UART引脚2.3 安装串口驱动2.4 获取环形缓冲区的数据长度2.5 读取数据2.6 发送数据 总结 前言 UART&…