C++学习之路: 关于class的静态变量

引言: 在定义类的时候,有时我们有一种需求想让 一个类的所以对象共用一个变量, 例如全体中华人民共和国公民共用一个人口总数, 我们都是中国公民, 但是我们国家的人口总数,是我们共有的。

由此我们引出了类中的static 静态变量, 它和 类体外的静态变量时有一些小小的区别的。

 1 #include <iostream>
 2 #include <string>
 3 #include <vector>
 4 using namespace std;
 5
 6 class Test
 7 {
 8     public:
 9         Test()
10         {
11             count++;
12         }
13
14         ~Test()
15         {
16             count--;
17         }
18
19         static void print()
20         {
21             cout << "当前对象个数: " << count << endl;
22         }
23     private:
24         static int count; //表示对象的个数
25 };
26
27 int Test::count = 0;
28
29 int main(int argc, const char *argv[])
30 {
31     Test::print();
32     Test t1;
33     t1.print();
34     Test t2;
35     t1.print();
36     t2.print();
37
38     return 0;
39 }

像我们代码中的static int count,首先它是class的private成员,不是所有用户都可以访问的,是私有的。

它是静态的,属于所有对象共同所有, 就像班级的篮球一样, 所有人都拥有它,但是却不是独享的。 当其中一个对象对其进行count++时,其他对象的count也会自增1;

1 当前对象个数: 0
2 当前对象个数: 1
3 当前对象个数: 2
4 当前对象个数: 2

打印结果,证实了我们的猜想。

时间: 2024-08-02 19:21:43

C++学习之路: 关于class的静态变量的相关文章

【python3的学习之路二】数据类型和变量

整数 python可以处理任意大小的整数(包括负整数),如100,0,-8080等. 浮点数 浮点数也就是小数,如1.23,-9.01等.但对于很大或很小的浮点数,就必须用科学计数法表示,把10用e代替,1.23*109就是1.23e9,0.000012可以写成1.2e-5. 字符串 字符串是以单引号或双引号括起来的任意文本.如果字符串内部既包含'又包含"怎么办?可以用转义字符\来标识,如果你不想让反斜杠发生转义,可以在字符串前面添加一个 r,表示原始字符串. print('I\'m \&quo

类与对象的学习之路

---恢复内容开始--- 学习java也有一段时间了,这周踏上了类与对象的学习之路,回过头来总结一下类与对象的基本知识.之前在大一上就接触了Python语言跟C语言,现在开始学习java语言了.我觉得跟之前学的C语言还是有区别的,至于在java书中提及的C++没学习,听别人说C++跟java有点像,这两种编程语言都是面向对象的,并且编程语言本身之间都有很多相似相同的地方. 一.说说类与对象 说到面向对象,那么不得不提的就是类和对象了.Java代码是以类为单位的.在我看来,类就是一个模板,比如一个

运维学习之路

网络:      路由               :静态路由,ospf,bgp 交换               :acs(802.1X) vlan间路由 VRRP 安全               :安全策略 QoS VPN(三种) 数据中心 系统工程师:系统基本维护 办公系统搭建维护    :邮箱 共享文件 SVN 中间件搭建维护      :WebLogic tomcat 监控系统搭建维护    :nagios cacti 负载均衡软件搭建维护:haproxy nginx lvs 网站搭

linux学习之路之目录结构

FHS的产生 我们知道目前linux的发行版本很多,如果每一个发行版本,它的目录层次结构都不相同的话,那么当管理员去管理其他的linux主机时,就会不知多措了.而且在开发过程中,如果每一个程序员都按照自己的想法去存放的数据的话,那么其他的程序员想去查找别人的数据文件时,这是问题就来了,因为文件系统中存放了那么多的数据,谁知道你把数据存放在哪儿了?因此,需要一个标准来规范,这样每个人都按照这种规范去存放.查找数据等操作,这样,当其他人如果需要去查找的话,就会简单多了. FHS:全称为文件系统目录标

[C++基础]029_C++学习之路

[C++基础]029_C++学习之路 看了一个多星期的C++,找了很多博客来计划铺垫未来C++学习之路,发现C++的水不是一般的深,虽然没有J2EE里面的各种框架,但是其本身已极尽复杂.个人才踩到了一点水皮,下面是摘录的一些博客上的内容,有需要学C++的,一起学习: C++高手需知知识(其中一部分,但有代表性) 虚函数是什么函数?为什么需要虚函数?普通基类和虚基类的区别是什么?虚继承的作用是什么? 什么是虚函数表?在多重继承关系下,虚函数表是如何存储虚函数关系的?如何通过虚函数表分析设计安全性?

Python学习之路—2018/7/11

Python学习之路-2018/7/10 3.功能开发 3.1 登录验证 login.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <t

vue学习之路 - 4.基本操作(下)

vue学习之路 - 4.基本操作(下) 简述:本章节主要介绍 vue 的一些其他常用指令. Vue 指令 这里将 vue 的指令分为系统内部指令(vue 自带指令)和用户自定义指令两种. 系统内部指令 v-if v-else v-else-if v-for v-on v-bind v-model 以上指令前面都已说明其作用,并且使用过,这里将不再赘述. 下面我们看看 vue 的一些其他常用指令的用法: 在学习 v-text 和 v-cloak 之前我们先看看{{ }}的使用所存在的问题. {{

后端开发者的Vue学习之路(二)

目录 上篇内容回顾: 数据绑定 表单输入框绑定 单行文本输入框 多行文本输入框 复选框checkbox 单选框radio 选择框select 数据绑定的修饰符 .lazy .number .trim 样式绑定 class绑定 对象语法: 数组语法: style绑定 对象语法: 数组语法: 补充: 事件 绑定事件 事件修饰符 按键修饰符 事件绑定的简写 补充: Vue指令 数组操作 官网的话 补充: Vue的元素复用问题 数据残留问题 问题的解决: 首发日期:2019-01-20 上篇内容回顾:

OllyDbg学习之路-3

6.比较和跳转指令 (1)cmp eax,ecx 相当于sub eax,ecx 但不保存结果到第一个操作数. 根据结果改变零标志位(Z).相等时,零标志位置1. 根据结果正负改变符号标志位(S).运算结果为负时,置为1. cmp允许寄存器与byte.word.dword类型的内存单元做比较. eg:cmp ax,word ptr ds:[405000] (2)test 两个数值进行与操作,结果不保存,改变相应标志位 eg:test eax,eax 这个指令可以确定eax是否为0 (3)关于寻找跳