现在的位置: 首页 > 综合 > 正文

静态成员函数 与 静态数据成员

2014年01月14日 ⁄ 综合 ⁄ 共 740字 ⁄ 字号 评论关闭

静态成员函数

       可以将类成员函数声明为静态的(函数声明中必须包含关键字static,如果函数定义是独立的,则其中不能包含关键字static)。

 

(1)不能通过对象调用静态成员函数,所以不能使用this指针;
(2)静态成员之间可以相互访问,包括静态成员函数访问静态数据成员和访问静态成员函数;
(3)如果静态成员函数是在公有部分声明的,则可以使用类名和作用域解析操作符来调用。

 

例如:

给String类添加一个名为HowMany()的静态成员函数
static int HowMany(){return num_string;}

 

调用它的方式如下
int count = string::HowMany();

(也可以用成员访问操作符(.)和(->)为一个类的对象或指向类对象的指针调用静态成员函数)

 

      其次,由于静态成员函数不与特定的对象相关联,因此只能使用静态数据成员。无法访问属于类对象的非静态数据成员,也无法访问非静态成员函数。非静态成员函数可以任意地访问静态成员函数和静态数据成员。

可以使用静态成员函数来设置类级(classwide)标记,以控制某些类接口的行为。例如,类级标志可以控制显示类内容的方法所使用的格式。

 

静态数据成员

 

在类内数据成员的声明前加上关键字static,该数据成员就是类内的静态数据成员。

 

(1)静态数据成员是该类的所有对象所共有的;
(2)静态数据成员定义时要分配空间,所以不能在类声明中定义;
(3)静态数据成员和普通数据成员一样遵从public,protected,private访问规则。

 

初始化静态数据成员的格式为:
<数据类型><类名>::<静态数据成员名>=<值>

 

访问形式为:
<类对象名>.<静态数据成员名> 或 <类类型名>::<静态数据成员名>

抱歉!评论已关闭.