1、静态成员变量

  类的静态成员变量是,由该类的所以对象共同维护和使用的数据成员,每个类只有一个副本,是类数据成员的一种特例。采用 static 关键字声明。

  目的:实现同一类中不同对象之间的数据共享。不包含 this 指针,因为是属于整个类的。

  初始化必须在类外进行,类内声明,类外初始化。可以通过类名,或对象名访问。

class student
{
public:
student(char* pName = "no name"); // 此处设置了默认参数
~student();
void printS()
{
cout << "The number of student is " << count << endl;
}
private:
static int count; // 类内声明,类外初始化
string name;
}; student::student(char* pName)
{
cout << "creat one student" << endl;
name = pName;
count++; //自加1
}
student::~student()
{
cout << "destruct one student" << endl;
count--; // 自减1
cout << "The number of student is " << count << endl;
}
// 声明静态成员函数
int student::count = ; void main()
{
student s1;
s1.printS();
student s2;
s2.printS(); system("pause");
}

  每次定义一个学生类,静态成员变量 count 就自加1。

2、静态成员函数

  静态成员函数只能调用静态成员变量,不能调用一般的变量(因为一般变量属于对象,对象不同就不知道调用哪个)。

  可以通过类名、或者对象名进行调用,它是属于一个类的函数。非静态的公有成员函数,只能通过对象、对象指针调用。

static void printS()
{
cout << "The number of student is " << count << endl;
}

C++(三十一) — 静态成员变量、静态成员函数的更多相关文章

  1. c++——静态成员变量成员函数

    静态成员变量成员函数 思考:每个变量,拥有属性.有没有一些属性,归所有对象拥有? 4.1静态成员变量 1)定义静态成员变量 关键字 static 可以用于说明一个类的成员, 静态成员提供了一个同类对象 ...

  2. c++,static 静态成员变量 / 静态成员函数

    静态成员变量: //静态成员变量(static) // //1.如果想在同类的多个对象之间实现数据共享 ,可以用静态 //成员变量,即用static修饰的成员变量,例 static int a; // ...

  3. c++中静态成员变量 静态成员函数 全局变量与静态函数的关系 字符串中括号的匹配编程 (笔试经历)

    笔试经历 1 类中的静态变量不能通过构造函数参数列表来初始化,因为静态变量不属于哪个对象.同时静态变量在不初始化的情况下系统会自动为变量赋值,数值型赋值为零,字符型赋值为空. 非静态变量只有在定义时才 ...

  4. static 关键字 静态成员变量及静态成员函数

    static类成员 类成员类似于C语言的全局变量,但是与全局变量又有所不同,例如,全局变量是可以被任何的用户代码所修改,而且全局变量破坏了对象的封装性. 使用类的 static 成员的优点 使用 st ...

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

    参考: http://blog.csdn.net/morewindows/article/details/6721430 http://www.cnblogs.com/lzjsky/archive/2 ...

  6. C++静态成员函数不能调用非静态成员变量

    其实我们从直观上可以很好的理解静态成员函数不能调用非静态成员变量这句话因为无论是静态成员函数还是静态成员变量,它们 都是在类的范畴之类的,及在类的整个生存周期里始终只能存在一份.然而非静态成员变量和非 ...

  7. C++解析(14):静态成员变量与静态成员函数

    0.目录 1.静态成员变量 2.静态成员函数 3.小结 1.静态成员变量 成员变量的回顾: 通过对象名能够访问public成员变量 每个对象的成员变量都是专属的 成员变量不能在对象之间共享 新的需求: ...

  8. c++ 静态成员变量

    在C++中,静态成员是属于整个类的而不是某个对象,静态成员变量只存储一份供所有对象共用.所以在所有对象中都可以共享它.使用静态成员变量实现多个对象之间的数据共享不会破坏隐藏的原则,保证了安全性还可以节 ...

  9. JAVA非静态成员变量之死循环

    1.非静态成员变量 当成员变量为非静态成员变量且对当前类进行实例化时,将会产生死循环 例子: public class ConstructorCls { private ConstructorCls ...

随机推荐

  1. 项目总结之HashMap问题

    在项目中我需要用另一个项目的中的方法,在另一个项目中的方法返回值是一个hashmap,返回的不是一个hashMap中存的对象而是Object对象.在一个项目中调用另一个项目中的方式是直接引入另一个项目 ...

  2. spark[源码]-任务调度源码分析[三]

    前言 在上一篇文章中,我主要是讲解了DAG阶段的处理,spark是如何将一个job根据宽窄依赖划分出多个stage的,在最后一步中是将生成的TaskSet提交给了TaskSchedulerInmpl的 ...

  3. C/C++之Qt正则表达式

    引言 正则表达式(regular expression)就是用一个“字符串”来描述一个特征,然后去验证另一个“字符串”是否符合这个特征.比如 表达式“ab+” 描述的特征是“一个 'a' 和 任意个  ...

  4. python3_pickle模块详解

    python3 pickle持久化的储存数据. python程序运行中得到了一些字符串,列表,字典等数据,想要长久的保存下来,方便以后使用,而不是简单的放入内存中关机断电就丢失数据.python模块大 ...

  5. java 2017/6/26杂记

    mkdirs()可以建立多级文件夹, mkdir()只会建立一级的文件夹, 如下: new File("/tmp/one/two/three").mkdirs(); 执行后, 会建 ...

  6. 20145327 《Java程序设计》第二周学习总结

    20145327 <Java程序设计>第二周学习总结 教材学习内容总结 JAVA类型:基本类型与类类型(也称参考类型). 基本类型分为:整数(short,int,long).字节(byte ...

  7. 20145331《Java程序设计》第1周学习总结

    20145331<Java程序设计>第1周学习总结 教材学习内容总结 第一章 1.java的三大平台分别为java SE.java EE.java ME,其中java SE是基础. 2.j ...

  8. 探讨"点"语法的奥秘

    点语法 一直以来,都不理解什么是点语法,都说是相当于链接或是路径.也许我浏览的信息量少吧,看过好几篇有关的博文,没什么记载,本篇只是初步见解分析. 在javascript里,属性和方法都使用“点”语法 ...

  9. C++DFS方法全排列

    前几天看纪磊的<啊哈!算法>一书,里面讲算法讲的特别通俗细致,真的是初中生都能读得懂的算法书(我大二才读:P).这段代码很适合初学算法的同学. #include<iostream&g ...

  10. python-打印进度条

    progress_bar.py #!/usr/bin/python3.6 #__*__uft8__*__ import sys import time def progress(percent,wid ...