static成员函数

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

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/

目录
相关文章
|
22天前
|
C++
C++当类模板遇到static
C++当类模板遇到static
|
3月前
|
消息中间件 Kubernetes NoSQL
static、const关键字
static、const关键字
|
4月前
|
存储 设计模式 算法
[C++] static静态成员变量/函数的用法
[C++] static静态成员变量/函数的用法
29 1
|
4月前
|
C++
c++中const修饰成员函数的问题
问题引入: 看下面这一段代码:
30 0
|
8月前
|
C++
C++中的const成员变量和成员函数
在类中,如果你不希望某些数据被修改,可以使用const关键字加以限定。const 可以用来修饰成员变量和成员函数。 const成员变量 const 成员变量的用法和普通 const 变量的用法相似,只需要在声明时加上 const 关键字。初始化 const 成员变量只有一种方法,就是通过构造函数的初始化列表,这点在前面已经讲到了,请猛击《C++初始化列表》回顾。 const成员函数(常成员函数) const 成员函数可以使用类中的所有成员变量,但是不能修改它们的值,这种措施主要还是为了保护数据而设置的。const 成员函数也称为常成员函数。 我们通常将 get 函数设置为常成员函数。
41 1
|
11月前
5-const修饰成员函数
5-const修饰成员函数
|
安全 编译器 C++
C++:类中const修饰的成员函数
C++:类中const修饰的成员函数
C++:类的static成员,友元和构造函数初始化列表
C++:类的static成员,友元和构造函数初始化列表