正文

《静态成员变量及函数》学习笔记2006-10-21 20:38:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/colormoon/19588.html

分享到:

1.类的静态成员变量在所有类的实例中是共享的。它是全局数据与成员数据的折中。可以把静态成员变量看成是属于类而不是属于对象的。因此,对类的实例对象中并不会为静态成员变量留出存储空间。

一个常见的错误是忘记定义类的静态成员变量。若HowmanyCats是类Cat的静态成员变量,则其定义句为:

int Cat::HowmanyCats=0;

此外,若该静态成员变量是私有的,那么类必须为该静态成员变量提供一个公有的访问函数。对于没有对象的静态成员,则可以定义一个不属于类的全局函数来访问该成员变量。因此可以在没有对象的情况下访问类的静态成员变量。

2.静态成员函数没有this指针,因此它们不能声明为const,且静态成员函数不能访问任何非静态成员变量。

3.如同数组名,函数名是指向函数的常指针。函数指针的声明如下所示:

long (*FunPtr) (int);

第一对括号必须有,否则就不是函数指针的定义,而是一个返回指针的函数。使用函数指针就如同使用函数名一样。

FunPtr(x);

(*FunPtr)(x);

一样,前一种只是后一种的简化形式。

也可以把函数指针作为函数变量来传递。例如:

void Func (void ( * ) (int &, int &) , int &, int &);

可以用typedef来定义结构 void ( * ) (int &,int &)

typedef  (*VPF) (int &,int &)

则 VPF可以用来代替以上结构体。

4.为创建成员函数指针,可以使用与函数指针创建相同的语法,但要包含类名和作用域运算符(::)。如:

void (Shape::*pFunc)(int ,int);

使用方法一样,只是需要一个类的对象。

阅读(2759) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册