static成员函数


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/


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM