1.static成员函数不能定义为const的,这是因为static成员函数只是全局函数的一个形式上的封装,而且static成员函数不能访问类的非静态成员(没有this)指针,修改非静态数据成员又从何说起呢?还有如果成员函数返回值是个引用的话,则也不能声明为const类型,因为返回引用就意味着你在函数外面可能会修改其指向的内存。

2.static成员函数不能声明为const,但是static 的数据成员可以声明为const。

const修饰符用于表示函数不能修改成员变量的值,该函数必须是含有this指针的类成员函数,函数调用方式为thiscall。而类中的static函数本质上是全局函数,调用规约是__cdecl或__stdcall,不能用const来修饰它。

如果既想定义const的类变量,又想访问其修改成员变量的成员函数,可以用mutable关键字来声明要修改的变量名。

3.只在类体的函数声明前加static,类体外函数定义不能指定关键字static。静态数据成员必须在类定义外初始化,但const静态数据成员除外,const静态数据成员可以在类体中初始化。static成员函数也不能被声明为虚函数。

class Bar

{

static Bar mem1;//ok

Bar *mem2;//ok

Bar mem3; //erro

}

原文

http://blog.csdn.net/starlee/archive/2006/12/05/1430387.aspx

http://www.cnblogs.com/chio/archive/2007/06/07/774362.html

http://bbs.csdn.net/topics/390246787

http://www.cnblogs.com/mydomain/archive/2011/03/22/1991449.html

http://blog.163.com/zhoumhan_0351/blog/static/39954227201002621251123/

http://blog.163.com/zhoumhan_0351/blog/static/3995422720103179552945/

转载于:https://www.cnblogs.com/mydomain/p/3244956.html

static成员函数相关推荐

  1. static成员函数不能调用non-static成员函数

    1 一般类静态成员函数不能调用非静态成员函数 2 static成员函数可以调用构造函数吗? 答案是肯定的,由于static成员函数没有this指针,所以一般static成员函数是不能访问non-sta ...

  2. [C++] - private static成员函数

    我们知道static成员函数不需要类创建具体的实例就可以调用,它有点类似于namespace将类和方法联系在一起.那么什么情况下会考虑将一个private的成员函数设置成static呢? 主要考虑两点 ...

  3. C++类中的static数据成员,static成员函数

    文章转自:http://www.cnblogs.com/gysm/archive/2011/09/16/2179277.html 版权归原作者. C++类中谈到static,我们可以在类中定义stat ...

  4. static成员函数和static成员

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

  5. C++类static成员函数的调用

    class中的静态成员函数作用再整个类的内部,对应类的所有实例是共享静态成员函数的,在调用静态成员函数的时候跟调用非静态成员函数是有区别的.另外,静态成员函数只能访问对应类内部的静态数据成员,否则会出 ...

  6. 为什么静态static成员函数不能成为virtual虚函数

    首先什么是static静态成员函数?静态成员函数不属于类中的任何一个对象和实例,属于类共有的一个函数.也就是说,它不能用this指针来访问,因为this指针指向的是每一个对象和实例. 对于virtua ...

  7. C++ 类的知识 | 构造函数再探、匿名对象、友元函数、内部类、类的const成员、类的static成员

    文章目录 构造函数再探 以下代码共调用多少次拷贝构造函数 委托构造函数 概念 形式 匿名对象 友元 友元的声明 友元类 令成员函数作为友元 函数重载和友元 注意 内部类 特性 类的const成员 可变 ...

  8. 一叶知秋:“安全“的野指针、 static函数、成员函数、this 指针、gcc编译器、name mangling

    <span style="font-size:18px;">我们从实验中去总结问题 测试一: virtual 函数和non-virtual函数 01.#include  ...

  9. 一叶知秋:“安全“的野指针、 static函数、成员函数、this 指针、gcc编译器、name mangling...

    <span style="font-size:18px;">我们从实验中去总结问题 测试一: virtual 函数和non-virtual函数 01.#include  ...

最新文章

  1. boost::python模块实现使用任意 Python 序列创建 ndarray 的示例
  2. mysql5.5 datetime默认值不能为NOW或者CURRENT_TIMESTAMP
  3. 佩斯大学计算机科学世界排名,美国佩斯大学留学推荐 计算机科学专业
  4. java pc 蓝牙_Nokia PC 套件与蓝牙适配器连接教程(转)--个人推荐
  5. MATLAB 读取txt文件(importdata函数)
  6. 软件项目管理实用教程(人民邮电出版)第四章课后习题
  7. 2017北京理工大学上机(二):二分查找
  8. Linux网络抓包工具tcpdump
  9. 优思学院|一文读懂SFMEA、DFMEA、PFMEA的关系
  10. MATLAB制作歌曲
  11. cloudchat苹果如何下载只能通过ipa吗
  12. SCANDISK命令详解与使用方法
  13. python 语音识别 离线_语音识别离线语音识别,SpeechRecognition
  14. 网络天才网页中文版_网络天才网页版akinato
  15. 电子商务B2C网站运营策略路线图
  16. VIM 的 commentary 插件
  17. 【ArcGIS】属性表导出及乱码问题
  18. Ubuntu系统部署在移动硬盘技术踩坑总结
  19. bootstrap datetimepicker的时间变成1899年
  20. 计算机基础知识面试题

热门文章

  1. 离人计算机乐谱,离人简谱 林志炫离人挥霍着眼泪,回避还在眼前的离别
  2. 计算机网络原基站,一种计算机网络工程用移动基站的制作方法
  3. php+ajax+打开新页面跳转,ajax怎样跳转到新的jsp页面(附代码)
  4. mysql不支持-_MySQL不支持的特性
  5. 【Python数据分析】数据挖掘建模——分类与预测——人工神经网络
  6. NLP工具包(Albert+BiLSTM+CRF)
  7. gpt linux双系统安装win7系统分区格式化,如何在GPT分区格式上安装win7 64位系统
  8. C#的二维码生成和解析
  9. 基于selenium生成Csdn 博客文章简索的excel文件
  10. membercache java_Java开发中的Memcache原理及实现