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/

posted @ 2013-08-08 07:49  浪里飞  阅读(3516)  评论(0编辑  收藏  举报