解释一:

举个例子,Base是一个类,data是他的int型static数据成员,那么我们这么定义:

int Base::data = 10;

1、因为使用static数据成员时,都是Base::data。。。。这么来用的,编译器知道data是在类Base的作用域内,它会去查看data在类中是怎么生命的,所以在定义处加static是没有必要的;
2、那如果加上static,也就是:

static int Base::data = 10;

这样的话,static并不在类的作用域内(并不在Base::后面),所以就得把static做一般解释了,那就是定义一个全局静态变量,也就是在其他源文件中是不能使用的。试想,如果类的定义是在某个头文件中,而这个定义又在另一个文件中,那让编译器情何以堪啊!

解释二:

静态成员 是 类成员
它和 对象成员(类的示例成员)差别之处在于当我实例化多个类的对象时, 这些对象共用这一个类的静态成员。不过前提是你要先定义这个静态成员。

class Task {public:
private:static int n;
}

这只是声明了一个静态成员 ,但还没定义。
声明时需要告诉编译器这是什么类型, 但定义时, 编译器会自己找声明
C++中有很多类似语法:
比如, 默认参数列表, 是声明的时候加默认参数, 定义函数的时候不需要;
定义inline函数也是声明的时候加inline, 定义的时候不加

C/C++——为什么类的静态成员函数在定义的时候不写static?相关推荐

  1. 在全局中调用类的静态成员函数

    在全局中直接调用类的静态成函数会产生重复声明错误. 例如: FooClass::FooStaticFunction(); 如果在全局中间接调用类的静态成员函数则不会产生错误,但是会产生多余的全局变量. ...

  2. 【C++面向对象】类的静态成员函数(static member functions)

    一.静态成员函数的引入 在引入静态成员函数之前,C++语言要求所有的成员函数都必须经由该类的对象来调用.而实际上,只有当成员函数中有存取非静态数据成员时才需要类对象.类对象提供this指针给这种函数使 ...

  3. 类的静态成员函数和静态成员变量的使用

    当将类的某个数据成员声明为static时,该静态数据成员只能被定义一次,而且要被同类的所有对象共享.各个对象都拥有类中每一个普通数据成员的副本,但静态数据成员只有一个实例存在,与定义了多少类对象无关. ...

  4. 类的静态成员函数带来了什么好处,应该在什么时候使用?

    函数的行为对所有派生类都一致时,可以声明为静态. 静态成员函数的作用基本上相当于一个带有命名空间的全局函数. 如一个数学类定义了一些函数 都可以声明伪静态的 Math.sin(x)等 好处很多,但所有 ...

  5. 类的静态成员函数和静态数据成员

    一.静态数据成员 1.定义: 静态数据成员就是给类的普通数据成员加上关键字static. 2.访问规则 静态数据成员也遵守public/protected/private访问规则 访问静态成员时,则可 ...

  6. 类和对象—对象特性—静态成员函数

    静态成员函数 所有对象共享同一个静态成员函数 静态成员函数只能访问静态成员变量 #include <iostream> using namespace std;class Person{p ...

  7. oc 协议 回调 静态成员_每日一问:c++类的成员函数,能作为线程的参数吗?

    问:类的成员函数可以传入线程参数吗? 回答: 如果c语言的全局函数,可以. 如果是类的静态成员函数,可以 如果是类的普通成员函数,不可以 为什么? <深入探索C++对象模型>中提到成员函数 ...

  8. 类的静态成员与静态成员函数

    静态成员 即定义出一些成员与类本身直接相关,而不是与类的各个对象保持关联. 1,声明静态成员 在成员的声明之前加上关键字static使得其与类关联在一起 class Test { public:    ...

  9. C++ 类的静态成员及静态成员函数

    https://www.cnblogs.com/codingmengmeng/p/5906282.html C++ 类的静态成员及静态成员函数 对象与对象之间的成员变量是相互独立的.要想共用数据,则需 ...

最新文章

  1. Python3 调试技巧 —— 死循环
  2. 连接被远程计算机621,拨号上网常见错误代码提示及解决方法
  3. word List 08
  4. 顺序表(代码、分析、汇编)
  5. 总结一些最优化算法(ADMM/FISTA)代码网站
  6. 【SQL】分析函数功能-排序
  7. 如何计算两向量的夹角
  8. 3D计算机组装,3DMax电脑组装配置
  9. SMARTDRV.EXE下载和安装说明
  10. 队列:实用服务和数据结构
  11. 腾讯2020校园招聘笔试题解
  12. deepin改无盘服务器,UbuntuDeepin系统上搭建nfs服务器
  13. Python函数返回多个值的方法
  14. vue3 使用element表格导出excel表格(带图片)
  15. 计算机维修分为那两种,计算机二级维修中最常见的三种方法是什么?
  16. 简述PCM 30/32帧结构图
  17. 基于HTML+JavaScript+CSS计算机实验室预约管理系统网页设计 文档+html源码
  18. [论文阅读] 基于辅助函数的IVA(使用源先验的四阶关系)
  19. ffmpeg锐化算法
  20. 软件测试之测试主流技能

热门文章

  1. oracle数据表空间与数据文件,oracle 操作表空间和数据文件
  2. python循环练习_Python循环练习
  3. python语言中包含的标准数据类型_Python标准数据类型
  4. fig,ax = plt.subplots()
  5. [线性代数] 对网络上一篇讲解特征值分解的物理意义的文章的批注
  6. Matconvnet 学习笔记
  7. python可以进行矩阵运算吗_python能做MATLAB等价的矩阵运算吗?
  8. 在新版本caffe里添加新的一层(向旧格式中加)
  9. 百度BCC云解析配置(新旧文档对比) - (文档篇)
  10. rnn按时间展开_一文搞懂RNN(循环神经网络)基础篇