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/