Excel不相邻列如何打印在一起-英雄云拓展知识分享
130
2023-11-01
【摘要】 本书摘自《C++程序开发案例课堂》一书中第10章,第7节,由刘春茂、李琪编著。
10.7.2 静态成员函数
静态的成员函数和静态成员数据相同,它们都属于某一个类的静态成员而不是属于某个 对象的成员。因此,在使用静态成员,不需要好似用对象名。
下面用一个例子来说明一下静态成员函数如何使用。
【例10-8】静态成员函数的使用(代码10-8.txt)。
新建名为jtleytest 的C++ Source File源程序。源代码如下:
#includeusing namespace std;
class M
public:
t(tic voai)d{A;(M mB)+;=a;)
private:
int A;
static int B;
};
void M::f1(M m)
{ cout<<"A="< cout<<"B="< int M::B=0; void main() M P(5),Q(10); M::f1(P);//file:调用时不用对象名 ("pause"); 【代码剖析】 在该例中,首先定义了一个M 类,在该类中定义了私有成员数据A 和静态成员数据B; 同时,定义了该类的构造函数 M,M 中对 A 进行赋值,并且将A 的值全部累加到B 上。定 义了一个静态成员函数 fl,把 A 的值和B 的值输出。在主程序中,首先定义了 M 类的两个 对象P 和Q, 分别把P 和Q 作为参数调用M 类的fl 函数。 运行结果如图10-8所示。 从结果来看,在把P 作为参数调用fl时,输出了A 为5,这个5就是在对P 进行初始化 时赋的值, B 为15是因为B 是静态变量,在分别对P 和 Q 进行初始化的时候就对B 进行了 累加计算,所以两次调用 fl 的时候B 值都为15。在对 fl 进行定义的时候,如果操作静态变 量 B, 则不必指定某个对象,如果是非静态变量 A, 则需指定是哪个对象的成员。调用静态 成员函数使用如下格式: <类名>::<静态成员函数名>(<参数表>)。 10.8 友 元 函 数 对于一般的函数来说,如果想要访问类中的保护数据成员,必须通过类的公共函数来访 问,对于公共函数来说,任何外部函数都可以调用,对安全性有一定的影响。在 C++ 中引入 友元函数的概念,使用 friend 关键字来定义友元函数。通过友元函数,可以直接调用类中的 保护成员,不需要将成员全部设置成 public, 使数据的安全性得到了保障。利用友元函数访问 类中的数据成员,这样就避免了总是调用类的成员函数所造成的内存开销大,效率低的 问题。 友元关系是单向的,不具有交换性和传递性。 在类里声明一个普通函数,在前面加上 friend 修饰,那么这个函数就成了该类的友元, 可以访问该类的一切成员。 下面通过一个实例来说明友元函数的使用方法。 【例10-9】友元函数的使用(代码10-9.txt)。 新建名为 yytest 的 C++Source File 源程序。源代码如下: using namespace std; class Internet public: Internet(char *name,char *address) strcpy(Internet::name,name); strcpy(Internet::address,address); friend void ShowN(Internet kobj);//友元函数的声明 protected: 【代码剖析】 在该例中,首先定义了Internet类,在该类中定义了两个保护数据成员name 和 address; 定义了构造函数,对两个数据成员进行初始化;定义了友元函数 ShowN, 该函数将参数指定 的 Internet类的 name 成员函数输出。在主程序中,定义了Internet类 a, 调用 ShowN 函数以 a为参数,把a 的name 输出。 运行结果如图10-9所示。 从结果来看,成功地访问到了 a 对象的保护成员name。 友元函数并不能看作是类的成员函数,它只是个被声明为类友元的普通函数,所以在类外部函数的定义部分不能够写成 void Internet::ShowN(Internet 图10-9 使用友元函数 &obj),这一点要注意。 版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们 18664393530@aliyun.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~