浅谈类的静态成员和友元

数据封装是C++和所用面向对象语言的一个特点和优点,利用类的数据封装,提高了对象访问的安全性。数据封转对对象数据来说,带来了统一的分布格局和严格的访问控制。由于对象数据往往不是独立的-----同类对象之间需要在类内共享数据,异类对象之间需要数据来往。于是数据的操作经常是以一个局外人的身份往来于诸多不同对象之间,使得屏蔽技术所主导的数据封装在编程中又带来了访问不便,于是,在数据屏蔽的基础上,类的静态成员和友元便作为完善数据封转技术的语言成分粉墨登场了

首先介绍类的静态成员:

1.类的静态成员分为静态数据成员和静态成员函数。用static进行申明

如:static int number,static int GetNumber()

2.为了实现类的不同对象之间实现数据共享引进了静态数据成员。

3.为了实现对静态数据成员的有效管理和操作,引进了静态成员函数,因此类的静态成员函数只能对类中静态数据和静态成员函数进行调用和访问,对其他非静态成员没有操作权限,所用静态成员函数中不能使用this指针。

4.静态数据成员必须在类外分配空间和初始化,应尽量在为类申请对象之前对静态数据成员进行初始化。即在类定义完成后,为其赋值。如:int 类名::number=0;

5.静态成员函数如果不在类中实现,而在类的外部实现,应该不要重复使用static,即static只需在类中定义时使用就行。

6.因为静态成员函数不能引用类的非静态成员,所以可以为其传递一个类的引用来通过该类来到达引用类的非静态成员。

7.类的静态成员函数可以用类的对象进行调用,也可使用类名加作用域操作符来调用

8.类的静态成员函数在实现中可以直接调用类的其他静态成员函数。


再来介绍下类的友元:

1.类的友员包括友元函数和友元类两种,其在类的定义中分别定义为:friend void GetName(); friend class Student;

2.友元的引入是为了实现异类对象之间需要数据来往,通过将函数申明为类的友元,即可对该类的所用成员进行访问和调用。

3.友元函数既可以是其他类的成员函数,也可以只是个普通函数。一个函数可以同时是多个类的友元函数。

4.友元函数只是在其所关联的类中声明,其实现可以在类外,而且不必加上类的作用域符。

5.将一个类声明成另一个类的友元函数后,该类的所用非静态函数都能访问将该类声明为友元类的那个类的所用成员

但是,需将友类做前向声明

6.友元函数一般在操作符重载上运用比较多,因为可以直接访问类的所用数据成员。



  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值