c++之static的作用

目录

1、C语言

​2、c++(拓展)

(1)static修饰成员变量

        (I)static修饰变量之后成为静态变量,在编译时就会产生空间;

 (II)解决思路:

a、目标要求:

b、原则:

c、解决方法:

d、运行结果:

e、结论:

(III)count是大家的,只有一份;name,age,id是私有的,每个成员都有一份

a、发现:

b、运行结果:

 c、结论:

 d、count的访问方式:

 (2)static修饰成员函数

3、考点


1、C语言

2、c++(拓展)

(1)static修饰成员变量

        (I)static修饰变量之后成为静态变量,在编译时就会产生空间;

下列代码运行后会出错,原因:

  • static int count:static修饰变量之后会产生空间;
  • 整个类是不产生空间的,它只是一个数据类型,在实例化对象的时候才会产生空间

#include<iostream>
#include<string>
using namespace std;class Student
{
public:Student(string _name="王丹",int _age=15,string _sex="男",int _id=608){name = _name;age = _age;sex = _sex;id = _id;}~Student(){cout << "析构函数" << endl;}void show(){cout << name << ",年龄:" << age << ",性别:" << sex << ",学号:" <<id<< endl;cout << "班级人数:" << count << "人" << endl;}
private:string name;int age;string sex;int id;static int count;//公共变量
};int main()
{Student s1;Student s2("林浩", 65, "男", 609);s1.show();s2.show();return 0;
}

运行结果

 (II)解决思路:

a、目标要求

在类内不产生空间,在类外产生空间

b、原则
  • static修饰的变量就是在编译时产生空间
  • 类内不能产生空间
c、解决方法

联想到声明不产生空间,定义产生空间

(static修饰的成员变量必须在类内声明,类外定义)

#include<iostream>
#include<string>
using namespace std;class Student
{
public:Student(string _name="王丹",int _age=15,string _sex="男",int _id=608){name = _name;age = _age;sex = _sex;id = _id;}~Student(){cout << "析构函数" << endl;}void show(){cout << name << ",年龄:" << age << ",性别:" << sex << ",学号:" <<id<< endl;cout << "班级人数:" << count << "人" << endl;}
private:string name;int age;string sex;int id;static int count;//声明:公共变量(不产生空间)
};
int Student::count = 33;//(1)类外定义:公共变量的值(产生空间)//(2)类外限制作用域:使得公共变量count还属于类int main()
{Student s1;Student s2("林浩", 65, "男", 609);s1.show();s2.show();return 0;
}
d、运行结果

e、结论:

static修饰的成员变量必须在类内声明,类外定义

(III)count是大家的,只有一份;name,age,id是私有的,每个成员都有一份


#include<iostream>
#include<string>
using namespace std;class Student
{
public:Student(string _name="王丹",int _age=15,string _sex="男",int _id=608){name = _name;age = _age;sex = _sex;id = _id;}~Student(){cout << "析构函数" << endl;}void show(){cout << name << ",年龄:" << age << ",性别:" << sex << ",学号:" <<id<< endl;cout << "班级人数:" << count << "人" << endl;}
/**********************设置count的值************************************/void Setcount(){count++;}private:string name;int age;string sex;int id;static int count;//static修饰的变量,类内声明,类外定义
};
int Student::count = 33;//static修饰的变量,类内声明,类外定义int main()
{Student s1;Student s2("林浩", 65, "男", 609);s1.Setcount();s1.show();s2.show();return 0;
}
a、发现:

改变s1的count的值,结果s2的count也改变了

b、运行结果:

 c、结论:

如图所示

  • count是大家的,只有一份;
  • name,age,id是私有的,每个成员都有一份

 

 d、count的访问方式:

(1)第一种:

                s1.count=……

                s2.count=……

(2)第二种:

                Student::count=……

 (2)static修饰成员函数

3、考点

(1)对象共享

(2)求sizeof()

(3)类内声明,类外定义

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

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

相关文章

基于Java SSM springboot+VUE+redis实现的前后端分类版网上商城项目

基于Java SSM springbootVUEredis实现的前后端分类版网上商城项目 博主介绍&#xff1a;多年java开发经验&#xff0c;专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 央顺技术团队 Java毕设项目精品实战案例《500套》 欢迎点赞 收藏 ⭐…

Python实现向量自回归移动平均与外生变量模型(VARMAX算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 向量自回归移动平均与外生变量模型&#xff08;Vector Autoregression Moving Average with Exogenous…

金融行业专题|期货超融合架构转型与场景探索合集(2023版)

更新内容&#xff1a; 更新 SmartX 超融合在期货行业的覆盖范围、部署规模与应用场景。新增 CTP 主席系统实践与评测、容器云资源池等场景实践。更多超融合金融核心生产业务场景实践&#xff0c;欢迎下载阅读电子书《SmartX 金融核心生产业务场景探索文章合集》。 面对不断变…

【机器学习】线性回归模型(Linear Regression)

&#x1f338;博主主页&#xff1a;釉色清风&#x1f338;文章专栏&#xff1a;机器学习&#x1f338;今日语录:温柔的一半是知识&#xff0c;没有知识的涵养撑不起你想要的风骨。 ☘️0文章预览 本系列文章主要是根据吴恩达老师的机器学习课程以及自己的理解整合而成&#xf…

electron安装最后一部卡住了?

控制台如下错误 不是的话基本可以划走了 这个很可能是镜像出现问题了&#xff0c;不一定是npm镜像 打开npm的配置文件添加下述 electron_mirrorhttps://cdn.npmmirror.com/binaries/electron/ electron_builder_binaries_mirrorhttps://npmmirror.com/mirrors/electron-build…

机器人内部传感器阅读梳理及心得-速度传感器-模拟式速度传感器

速度传感器是机器人内部传感器之一&#xff0c;是闭环控制系统中不可缺少的重要组成部分&#xff0c;它用来测量机器人关节的运动速度。可以进行速度测量的传感器很多&#xff0c;如进行位置测量的传感器大多可同时获得速度的信息。但是应用最广泛、能直接得到代表转速的电压且…

《TCP/IP详解 卷一》第10章 UDP和IP分片

目录 10.1 引言 10.2 UDP 头部 10.3 UDP校验和 10.4 例子 10.5 UDP 和 IPv6 10.6 UDP-Lite 10.7 IP分片 10.7.1 例子&#xff1a;IPV4 UDP分片 10.7.2 重组超时 10.8 采用UDP的路径MTU发现 10.9 IP分片和ARP/ND之间的交互 10.10 最大UDP数据报长度 10.11 UDP服务器…

三、软考-系统架构设计师笔记-计算机系统基础知识

计算机系统概述 计算机系统是指用于数据管理的计算机硬件、软件及网络组成的系统。 它是按人的要求接收和存储信息&#xff0c;自动进行数据处理和计算&#xff0c;并输出结果信息的机器系统。 冯诺依曼体系计算机结构&#xff1a; 1、计算机硬件组成 冯诺依曼计算机结构将…

OpenCV实现目标追踪

目录 准备工作 语言&#xff1a; 软件包&#xff1a; 效果演示 代码解读 &#xff08;1&#xff09;导入OpenCV库 &#xff08;2&#xff09;使用 cv2.VideoCapture 打开指定路径的视频文件 &#xff08;3&#xff09;使用 vid.read() 读取视频的第一帧&#xff0c;ret…

2024年阿里云2核4G配置服务器测评_ECS和轻量性能测评

阿里云2核4G服务器多少钱一年&#xff1f;2核4G服务器1个月费用多少&#xff1f;2核4G服务器30元3个月、85元一年&#xff0c;轻量应用服务器2核4G4M带宽165元一年&#xff0c;企业用户2核4G5M带宽199元一年。本文阿里云服务器网整理的2核4G参加活动的主机是ECS经济型e实例和u1…

同局域网共享虚拟机(VMware)

一、前言 首先我们先来了解下 VMware 的三种网络模式桥接模式、NAT模式、仅主机模式&#xff0c;网络类型介绍详情可以参考下我之前的文档 Linux系统虚拟机安装&#xff08;上&#xff09;第三章 - 第9步指定网络类型。了解三种网络模式的原理之后&#xff0c;再来剖析下需求&…

HuggingFists系统功能介绍(5)--环境资源

模型库 模型库用于管理由HuggingFists系统自己生成的或者外部导入的各种模型。如&#xff1a;HuggingFace网站提供的各类模型可导入该模块进行统一管理及部署。该功能目前在HuggingFists的社区版中并未提供。 环境管理 环境管理-工作节点 环境管理-服务配置 环境管理主要用于与…