在开发应用程序时,一个类经常将另一个类的对象作为自己的成员,这样,在该类中就可以访问另一个类的共有数据和方法了。但是,有些时候需要方位另一个类中的私有数据成员和方法,C++中提供了友元类,在类A中将类B声明为一个友元类,那么在B中就可以访问类A中的私有数据成员和方法了。
::友元关系不能传递。如果A是B的友元,B是C的友元,并不意味着A是C的友元。友元关系也不能够继承,如果A是B的友元,C派生于A,不意味着C是B的友元。
如果雷A是类B的友元,那么类A中的类B对象能够访问B中所有的数据和方法。
有些时候需要限制类A对类B的访问,使其只能通过几个函访问数类B中的私有数据和方法。C++中提供了友元函数,用户可以在类B中将类A中的成果函数声明为友元,通过友元函数限制对类B的访问。
如果类A中的成员函数时类B的友元函数,其在类B中的声明形式为(friend 函数返回值类型 函数名(参数)),这样在类A中的该成员函数内部类B的对象就可以访问类B的所有方法和对象了。
在声明类的方法时,可以使用const关键字,这样就不会改变类中的任何数据成员。对于类中的一些只读方法,应当将其声明为const方法。例如:
int getheight() const;
在开发程序时,对于不想改变类成员数据的函数,应将其声明const方法,这样编译器会帮助开发人员发现错误。