C++ static静态

 个人主页:Jason_from_China-CSDN博客

所属栏目:C++系统性学习_Jason_from_China的博客-CSDN博客

所属栏目:C++知识点的补充_Jason_from_China的博客-CSDN博客

概念概述

  • 用 static 修饰的成员变量,称之为静态成员变量,静态成员变量一定要在类里面生命,在类外进行初始化。
  • 静态成员变量为所有类对象所共享,不属于某个具体的对象,不存在对象中,存放在静态区。
  • 用 static 修饰的成员函数,称之为静态成员函数,静态成员函数没有 this 指针。
  • 静态成员函数中可以访问其他的静态成员,但是不能访问非静态的,因为没有 this 指针。
  • 非静态的成员函数,可以访问任意的静态成员变量和静态成员函数。
  • 突破类域就可以访问静态成员,可以通过类名::静态成员或者对象.静态成员来访问静态成员变量和静态成员函数。
  •  静态成员也是类的成员,受 public、protected、private 访问限定符的限制。
  • 静态成员变量不能在声明位置给缺省值初始化,因为缺省值是个构造函数初始化列表的,静态成员变量不属于某个对象,不走构造函数初始化列表。

static的使用1:

  • 静态成员函数的使用是很结合构造和析构的,静态成员函数是可以直接突破类域来访问静态成员函数
  • 不是静态成员函数就不能突破类域直接访问,我们需要创建一个对象,利用对象访问成员函数

  • 如果不设置静态成员函数,那么你需要访问成员变量,就需要创建一个对象才能访问成员函数,从而导致麻烦。所以我们可以直接设置为静态成员函数。

  • 这里有一个注意事项,就是不是静态成员变量,不能用静态成员函数访问,不然会导致报错

static的使用2:

这里我使用vs编译器,vs编译器不支持可边长数组,所以代码有点不一样

#include<iostream>
using namespace std;
//求1+2......+n//不能使用乘除
class sum
{
public:sum(){_ret += _i;++_i;}//获取ret最终的结果static int _GetRet(){return _ret;}
private:static int _i;static int _ret;
};
int sum::_i = 1;
int sum::_ret = 0;class solution
{
public:int _solution(int n){for (int i = 0; i < n; i++){//创建n次构造函数,n次构造函数++会依次递加sum s;}//创建n次数之后,我们计算出来数值,此时我们可以选择数值来进行接收int ret = sum::_GetRet();//打印数值cout << ret << endl;//返回数值return sum::_GetRet();}
};int main()
{solution s;int ret = s._solution(100);//这里接收进行验证,发现是正确的cout << ret << endl;//打印出来return 0;
}

sum

  1. 成员变量:

    • static int _i:静态成员变量,用于记录当前要累加的数字。初始化为 1。
    • static int _ret:静态成员变量,用于存储累加的结果。初始化为 0。
  2. 构造函数:

    • 每次创建 sum 类的对象时,构造函数被调用。在构造函数中,将当前的 _i 值累加到 _ret 中,然后将 _i 的值自增。这样,每次创建对象就相当于进行一次累加操作。
  3. 静态成员函数 _GetRet()

    • 用于获取 _ret 的值,即累加的结果。

solution

  1. 成员函数 _solution(int n)
    • 这个函数接受一个整数 n,目的是计算从 1 加到 n 的和。
    • 通过一个循环创建 n 次 sum 类的对象。每次创建对象时,sum 类的构造函数会自动进行累加操作。
    • 最后,通过 sum::_GetRet() 获取累加的结果,并将其赋值给 ret,然后打印和返回这个结果。

static的使用3:

构造函数:C是全局变量先进行构造,其次就是局部变量依次进行构造

析构函数:先析构局部变量,先构造的后析构,所以先析构B,其次是A,最后是D,全局变量生命周期伴随函数的结束

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

如何让 Raft 更稳健,使用 Pre-vote

本文参考文献 《Consensus: Bridging Theory and Practice》 1. Provote 解析原文 该算法解决的是某台机器被隔离后&#xff0c;再次加入时出现的扰动其他机器的问题。 1. 防止服务器重新加入集群时引发的中断 Raft领导者选举算法的一个缺点是&#xff0c;当一台已从集群中…

医疗工具实例分割系统源码&数据集分享

医疗工具实例分割系统源码&#xff06;数据集分享 [yolov8-seg-C2f-DySnakeConv&#xff06;yolov8-seg-goldyolo等50全套改进创新点发刊_一键训练教程_Web前端展示] 1.研究背景与意义 项目参考ILSVRC ImageNet Large Scale Visual Recognition Challenge 项目来源AAAI Glo…

JS设计模式之策略模式:灵活、可扩展的编程利器

一. 前言 在 JavaScript 前端开发中&#xff0c;随着代码规模的增长和项目的复杂性&#xff0c;我们常常需要处理各种不同的条件和情况&#xff0c;而这可能导致代码变得冗长、难以维护。这时&#xff0c;我们就需要一种强大而灵活的编程模式来应对这些复杂的逻辑&#xff0c;…

【记录】PPT|PPT 箭头相交怎么跨过

众所周知&#xff0c;在PPT中实现“跨线”效果并非直接可行&#xff0c;这一功能仅存在于Visio中。然而&#xff0c;通过一些巧妙的方法&#xff0c;我们可以在PPT中模拟出类似的效果。怎么在PPT中画交叉但不重叠的线-百度经验中介绍了一种方法&#xff0c;而本文将介绍一种改进…

如何自制无人机?

自制无人机是一个既有趣又富有挑战性的项目&#xff0c;它涉及到电子工程、机械工程和航空航天工程等多个领域的知识。以下是一个基本的自制无人机制作步骤和所需材料概览&#xff0c;供您参考&#xff1a; 一、准备阶段 1. 明确目标 - 确定无人机的用途&#xff08;如航拍、…

递归 回溯算法详解

递归 深搜 回溯 什么是回溯算法题目一&#xff1a; 全排列1. 题⽬链接&#xff1a;2. 题⽬描述&#xff1a;3. 解法&#xff1a;算法思路&#xff1a;递归流程如下&#xff1a; 4.代码 题目二&#xff1a;⼦集1. 题⽬链接&#xff1a;2. 题目描述&#xff1a;3. 解法&#xff1…

宠物咖啡馆数字化转型:SpringBoot框架的实践

1系统概述 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及&#xff0c;互联网成为人们查找信息的重要场所&#xff0c;二十一世纪是信息的时代&#xff0c;所以信息的管理显得特别重要。因此&#xff0c;使用计算机来管理基于Spring Boot的宠物咖啡馆平台的设计与…

【中间件】—一篇说明白API网关常用API网关推荐

【中间件】- API网关简介 ⭐⭐⭐⭐⭐⭐ Github主页&#x1f449;https://github.com/A-BigTree 笔记仓库&#x1f449;https://github.com/A-BigTree/tree-learning-notes 个人主页&#x1f449;https://www.abigtree.top ⭐⭐⭐⭐⭐⭐ 文章目录 【中间件】- API网关简介1 计算…

机器学习K近邻算法——回归问题K近邻算法示例

针对“数据4.1”&#xff0c;讲解回归问题的K近邻算法&#xff0c;以V1&#xff08;营业利润水平&#xff09;为响应变量&#xff0c;以V2&#xff08;固定资产投资&#xff09;、V3&#xff08;平均职工人数&#xff09;、V4&#xff08;研究开发支出&#xff09;为特征变量。…

[Python学习日记-41] Python 中的列表生成式

[Python学习日记-41] Python 中的列表生成式 简介 什么是列表生成式 简介 列表是编程当中最为常用的一种数据类型&#xff0c;同时我们也会经常操作&#xff08;增删改查&#xff09;里面的数据&#xff0c;有的时候我们会需要大批量的修改所有列表当中的数据&#xff0c;本篇…

你会写SCI学术论文吗?

撰写SCI学术论文是许多科研工作者和研究生的必经之路。然而&#xff0c;对于许多新手来说&#xff0c;这可能是一个既复杂又令人望而生畏的任务。本文将为你提供一些实用的建议和步骤&#xff0c;帮助你更高效地完成SCI论文的写作。 1. 先中间后两头&#xff1a;摘要和结论最…

CCF开源发展委员会主任王怀民院士参与世界计算大会“开源生态构建数字未来”主题研讨并做重要报告...

点击蓝字 关注我们 CCF Opensource Development Committee 2024年9月25日上午&#xff0c;作为2024世界计算大会论坛之一的“开源生态构建数字未来”主题研讨在长沙召开。本次论坛由长沙先进技术研究院承办&#xff0c;由中国开源软件推进联盟、CCF YOCSEF长沙、湖南先进技术研…

自动驾驶系列—超声波雷达技术详解:自动驾驶中的短距离感知利器

&#x1f31f;&#x1f31f; 欢迎来到我的技术小筑&#xff0c;一个专为技术探索者打造的交流空间。在这里&#xff0c;我们不仅分享代码的智慧&#xff0c;还探讨技术的深度与广度。无论您是资深开发者还是技术新手&#xff0c;这里都有一片属于您的天空。让我们在知识的海洋中…

无人机之飞行算法篇

无人机的飞行算法是一个复杂而精细的系统&#xff0c;它涵盖了多个关键技术和算法&#xff0c;以确保无人机能够稳定、准确地执行飞行任务。 一、位置估计 无人机在空中飞行过程中需要实时获取其位置信息&#xff0c;以便进行路径规划和控制。这通常通过以下传感器实现&#…

RemoteView(kotlin)

使用场景&#xff1a;通知栏&桌面部件 自定义通知栏 通知权限申请 manifest配置 <uses-permission android:name"android.permission.POST_NOTIFICATIONS" />权限动态申请 package com.example.kotlinlearn.Common;import android.Manifest; import an…

【笔记】Day2.4表设计说明

主键ID一般使用bigint类型 运送类型 使用比int更小的tinyint类型 eg&#xff1a;普快代表1 特快代表2&#xff08;没写反&#xff09; 关联城市 varchar 2代表京津冀 3代表江浙沪 4代表川渝 首重和续重都有小数点 故使用double 轻抛系数都为整数 故使用int 创建时间和修改…

计算机毕业设计 基于Django的在线考试系统的设计与实现 Python+Django+Vue 前后端分离 附源码 讲解 文档

&#x1f34a;作者&#xff1a;计算机编程-吉哥 &#x1f34a;简介&#xff1a;专业从事JavaWeb程序开发&#xff0c;微信小程序开发&#xff0c;定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事&#xff0c;生活就是快乐的。 &#x1f34a;心愿&#xff1a;点…

自然语言到 SQL 的曙光:我们准备好了吗?

发布于&#xff1a;2024 年 10 月 08 日 各位读者&#xff0c;国庆假期已过&#xff0c;我们打工人要开启奋斗新征程了&#xff0c;今天小编也是刚上班假期综合征还没过去&#xff0c;就被抓过来读论文&#xff0c;还好我在假期没闲着&#xff0c;整理了几篇关于 NL2SQL 的最新…

Spring与Spring Boot之间的区别

Spring和Spring Boot是用于开发Java企业应用的两个主流框架。虽然它们都属于Spring生态系统的一部分&#xff0c;但是它们各自有不同的使用场景和特点。 在本文中&#xff0c;我们将探讨Spring与Spring Boot之间的差异&#xff0c;针对他们之间特性的差异&#xff0c;做一个详…

李沐 X 动手学深度学习 深度学习介绍 学习笔记

x轴是不同的模式&#xff1a;符号学---概率模型---机器学习y轴是我们想做的东西&#xff08;问题领域&#xff09;&#xff1a;感知&#xff08;了解这是什么东西&#xff0c;能看见这个物体&#xff09;---&#xff08;做&#xff09;推理&#xff08;基于我看到的东西想象未来…