欢迎来到天天文库
浏览记录
ID:48236592
大小:496.00 KB
页数:27页
时间:2020-01-18
《友元静态及类模板.ppt》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、静态成员是满足在某些情况下数据共享的需求。全局对象是实现数据共享的一种方法,但是,它有一定的局限性,因为它处处可见,因此不够安全。为了安全起见,要实现多个数据的共享,可使用静态成员。静态成员不属于某个对象,而属于类。静态成员的分类静态数据成员静态成员函数3.9静态成员3.9.1静态数据成员静态数据成员是同一个类中所有对象共享的成员,而不是某一对象的成员。一个类的静态数据成员只存储在一处,供该类所有对象共享访问。如果需要把某一数据成员声明为静态成员,只需在其前面加关键字static。由于静态数据成员是静态存储的,它具有静态生存期。注声明类时说明的静态数据成员只是一种引用性声明,而且在声明对象时,
2、由于静态数据成员的特殊性,并不会为之分配内存。要求单独对静态数据成员进行定义性声明,以获得相应的存储空间并赋值必须在类体外进行初始化。注使用作用域运算符“::”,说明静态数据成员所属的类;静态数据成员的初始化与构造函数和析构函数无关;初始化时,不加关键字static;静态数据成员的值可以被更新;静态数据成员属于类,即被该类的所有对象所共有。静态数据成员初始化格式如下:类型类名::静态数据成员名=值;例如:intA::sum=0;静态数据成员声明格式如下:static类型静态数据成员名;例如:staticintsum;在类内在类外classA{public:A(intx,inty)//构造函数
3、{a=x;b=y;}~A(){}//构造函数voidgetXY()//成员函数{cout<<"X="<4、例静态数据成员的使用。例如:#includeclassA{public:staticintx;//声明公有的静态数据成员};intA::x=10;voidmain(){cout<5、或指向对象的指针。注在类外定义静态成员函数时,函数头前不能加关键字static。3.9.2静态成员函数#includeclassA{public:A(intx1,intx2){x=x1;y=y+x2;}~A(){}staticvoidfun1(){cout<<“Y=”<6、n(){Aa(1,2);a.fun1();//通过对象名访问A::fun2(a);//通过类名访问}案例静态成员函数。Y=2X=1Y=2友元提供了在不同类的成员函数之间、类的成员函数与一般函数之间进行数据共享的机制。通过友元,一个普通函数或另一个类中的成员函数可以访问类中的私有成员和保护成员。友元可以是函数,则该函数叫友元函数。可以是一个类,则该类叫友元类。声明类时,可以使用关键字friend把一个函数声明为这个类的友元函数。3.10.1友元函数友元函数并不是这个类的成员函数,但它可以在其函数体中通过对象名访问这个类的私有或保护成员。注3.10友元#includecla7、ssA//声明类A{public:voidmemberfun(intx);//成员函数};classB//声明类B{public:B(){}//构造函数B(intx1)//构造函数{x=x1;}~B(){}//析构函数voidgetX()//成员函数{cout<<"X="<
4、例静态数据成员的使用。例如:#includeclassA{public:staticintx;//声明公有的静态数据成员};intA::x=10;voidmain(){cout<5、或指向对象的指针。注在类外定义静态成员函数时,函数头前不能加关键字static。3.9.2静态成员函数#includeclassA{public:A(intx1,intx2){x=x1;y=y+x2;}~A(){}staticvoidfun1(){cout<<“Y=”<6、n(){Aa(1,2);a.fun1();//通过对象名访问A::fun2(a);//通过类名访问}案例静态成员函数。Y=2X=1Y=2友元提供了在不同类的成员函数之间、类的成员函数与一般函数之间进行数据共享的机制。通过友元,一个普通函数或另一个类中的成员函数可以访问类中的私有成员和保护成员。友元可以是函数,则该函数叫友元函数。可以是一个类,则该类叫友元类。声明类时,可以使用关键字friend把一个函数声明为这个类的友元函数。3.10.1友元函数友元函数并不是这个类的成员函数,但它可以在其函数体中通过对象名访问这个类的私有或保护成员。注3.10友元#includecla7、ssA//声明类A{public:voidmemberfun(intx);//成员函数};classB//声明类B{public:B(){}//构造函数B(intx1)//构造函数{x=x1;}~B(){}//析构函数voidgetX()//成员函数{cout<<"X="<
5、或指向对象的指针。注在类外定义静态成员函数时,函数头前不能加关键字static。3.9.2静态成员函数#includeclassA{public:A(intx1,intx2){x=x1;y=y+x2;}~A(){}staticvoidfun1(){cout<<“Y=”<6、n(){Aa(1,2);a.fun1();//通过对象名访问A::fun2(a);//通过类名访问}案例静态成员函数。Y=2X=1Y=2友元提供了在不同类的成员函数之间、类的成员函数与一般函数之间进行数据共享的机制。通过友元,一个普通函数或另一个类中的成员函数可以访问类中的私有成员和保护成员。友元可以是函数,则该函数叫友元函数。可以是一个类,则该类叫友元类。声明类时,可以使用关键字friend把一个函数声明为这个类的友元函数。3.10.1友元函数友元函数并不是这个类的成员函数,但它可以在其函数体中通过对象名访问这个类的私有或保护成员。注3.10友元#includecla7、ssA//声明类A{public:voidmemberfun(intx);//成员函数};classB//声明类B{public:B(){}//构造函数B(intx1)//构造函数{x=x1;}~B(){}//析构函数voidgetX()//成员函数{cout<<"X="<
6、n(){Aa(1,2);a.fun1();//通过对象名访问A::fun2(a);//通过类名访问}案例静态成员函数。Y=2X=1Y=2友元提供了在不同类的成员函数之间、类的成员函数与一般函数之间进行数据共享的机制。通过友元,一个普通函数或另一个类中的成员函数可以访问类中的私有成员和保护成员。友元可以是函数,则该函数叫友元函数。可以是一个类,则该类叫友元类。声明类时,可以使用关键字friend把一个函数声明为这个类的友元函数。3.10.1友元函数友元函数并不是这个类的成员函数,但它可以在其函数体中通过对象名访问这个类的私有或保护成员。注3.10友元#includecla
7、ssA//声明类A{public:voidmemberfun(intx);//成员函数};classB//声明类B{public:B(){}//构造函数B(intx1)//构造函数{x=x1;}~B(){}//析构函数voidgetX()//成员函数{cout<<"X="<
此文档下载收益归作者所有