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

但是可以通过对象调用静态成员函数,虽然我们一般不会这么做:

 class Point
{
public:
void init()
{
}
static void output()
{
}
}; void main()
{
Point pt;
pt.init();  //OK
pt.output(); //OK
}

在类外实现时不加static关键字,只有在类内声明时才加static。

我们一般会用类名直接调用静态成员函数:

 Point::output();    //OK 这是更常见的调用方式

静态成员函数中不能调用非静态成员。因为静态成员函数的作用就是为了处理静态成员。而静态成员和静态成员函数是没有this指针的,但是非静态成员是有this指针的,所以static member function不能调用非静态成员。

为什么静态成员和静态成员函数没有this指针?

this指针的值是当前被调用的成员函数所在的对象的起始地址,而静态成员只属于类,不属于对象,也就没有this指针了。

最新文章

  1. IE浏览器版本判断 HTML代码
  2. appium过程中的问题
  3. MongoDB索引创建(5)
  4. thinkphp设置session有效时间
  5. 命名空间$.fn
  6. 硬件断点 DrxHook
  7. Ajax提交整个表单
  8. input屏蔽历史记录
  9. 切服务器时请注意robots.txt文件
  10. Python: 测试函数是否被调用
  11. hdu 1134 Game of Connections
  12. 网络上下载的Ghost系统含威胁
  13. linux使用过程中遇到的问题和解决方法
  14. 修改oracle数据库内存报错
  15. python3 --- locale命名空间让程序更加安全了
  16. Microsoft.Identity的IPasswordHasher加密的默认实现与运用
  17. pyquery的使用
  18. wampserver 手动启用停用命令
  19. centos的 / ~ - 的意思
  20. python的IDLE界面回退代码语句

热门文章

  1. python用户评论标签匹配的解决方法
  2. ORA-03114: not connected to ORACLE
  3. jQuery.fn.extend与jQuery.extend的区别
  4. 强化学习——Q-learning算法
  5. IOS上的 Audio Memos SE 如何分享和传输录音到电脑?
  6. node.js基础---增删
  7. 如何创建spring web 工程(maven工程)
  8. Oracle 11.2.0.4_Linux单例篇
  9. jdk1.8 Maven 的安装教程
  10. Redis 学习笔记(篇十):Sentinel