数据和函数
面向对象的程序设计中,数据描述对象的属性,函数是行为,用来处理数据。将数据和函数封装到一个类中,类中的函数成员可以处理数据成员,函数成员之间可以共享数据。
函数之间可以共享数据的方式包括:局部变量,全局变量,类的数据成员,类的静态成员和友元。其中,通过参数传递,可以在主调函数和被调函数之间实现对局部变量的数据共享。(具体如何实现?需要实践。)
全局变量具有文件作用域,文件中的各个函数都能共享全局变量。
类的数据成员具有类作用域,能够被类的函数成员共享。如果对类的数据成员设置为私有类型,则可以对类的数据成员实现隐藏和共享,其中,隐藏是针对类的范围以外,而共享针对的是类的范围之内。
类的静态成员可以是数据成员,也可以是函数成员。
类的静态数据成员,存放的是类的所有对象某个共同特征的数据,对于类的对象而言,该数据在内存中只有一份,是相同的,而不是像一般数据成员一样,每生成一个对象,就在对象内部有一份拷贝,一般数据成员在每个对象中的值可能是不相同的。静态数据成员由类的所有对象共同维护和使用,实现了类的对象间的数据共享。
类的静态函数成员,同类的静态数据成员一样,由类的所有对象共同维护和使用,通过类名或对象名调用公有类型的静态函数成员。类的静态函数成员存在的意义在于,我们希望利用它们,不通过对象,直接使用类名访问类的静态数据成员。类的静态成员函数可以访问该类的静态数据成员和其他静态函数成员。如果要访问其他非静态数据成员,要将该类的对象做为参数传入,然后通过对象名才能访问。类的静态函数成员访问非静态数据成员很不方便,它们主要用来访问全局变量,和同一个类中其他的静态数据成员。
友元,友元机制相当于在类的封装得很好的外衣上剪了一个小洞。通过友元机制,某个普通函数或者类的成员函数可以访问另一个类中的私有成员。友元的关系不可传递,而且是单向的。