第6章静态成员与友元(论文资料).pptVIP

  • 1
  • 0
  • 约4.86千字
  • 约 26页
  • 2017-01-01 发布于重庆
  • 举报
第6章 静态成员与友元 6.1 静态成员 6.2 友元函数 6.3 友元类 6.1 静态成员 6.1.1 静态数据成员 6.1.2 静态成员函数 6.1.1 静态数据成员 C++中,同一个类定义多个对象时,每个对象拥有各自的数据成员(不包括静态数据成员),而所有对象共享一份成员函数和一份静态数据成员。静态数据成员是类的所有对象中共享的成员,而不是某个对象的成员,因此可以实现多个对象间的数据共享。静态数据成员不属于任何对象,它不因对象的建立而产生,也不因对象的析构而删除,它是类定义的一部分,所以使用静态数据成员不会破坏类的隐蔽性。 静态数据成员的使用方法如下: (1)静态数据成员的定义与一般数据成员相似,但前面要加上static关键词。 (2)静态数据成员的初始化与一般数据成员不同,静态数据成员初始化的格式如下: 类型 类名::静态数据成员=值; (3)在引用静态数据成员时采用格式: 类名::静态数据成员 (4)静态数据成员是静态存储的,它是静态生存期,必须对它进行初始化。 例6-1:用静态数据成员实现班会费管理程序。 #includeiostream.h class person { char* name; int age; static int count; //定义静态成员,存放班会费 public: void setData(char* s,int n){name=s;age=n;}; void getData(int n){count=count+n;}; void spend(int n){count=count-n;}; void display(){coutcountendl;}; }; int person::count=0; //为静态数据成员分配空间和初始化 void main() { person demo1,demo2; demo1.setData(Robert,21); demo2.setData(Mary,18); demo1.getData(1000); demo2.display(); //输出1000 demo2.spend(300); demo1.display(); // 输出 700 } 6.1.2 静态成员函数 静态成员函数与静态数据成员类似,也是从属于类,静态成员函数的定义是在一般函数定义前加上static关键字。调用静态成员函数的格式如下: 类名::静态成员函数名(参数表); 静态成员函数与静态数据成员一样,与类相联系,不与对象相联系,只要类存在,静态成员函数就可以使用,所以访问静态成员函数时不需要对象。静态成员函数没有this指针,因此,静态成员函数只能直接访问类中的静态成员,若要访问类中的非静态成员时,必须借助对象名或指向对象的指针。 例6-3:用静态成员函数实现班会费管理程序。 #includeiostream.h class person { char* name; int age; static int count; //定义静态成员,存放班会费 public: void setData(char* s,int n){name=s;age=n;}; void getData(int n){count=count+n;}; void spend(int n){count=count-n;}; static void display(){coutcountendl;}; //定义静态成员函数 }; int person::count=0; //为静态数据成员分配空间和初始化 void main() { person demo1,demo2; demo1.setData(Robert,21); demo2.setData(Mary,18); demo1.getData(1000); person::display(); //用类名去调用静态成员函数 demo2.spend(300); demo1.display(); //用对象的类型去调用静态成员函数 } 例6-4:写出下面程序的执行结果。 #include iostream.h class M { public: M(int a){ A=a;B+=a;} static void f1(M m); private: int A; static int B; }; void M::f1(M m) { coutA=m.Aendl; //在静态成员函数中,只能通过对象访问类的非静态成员 coutB=Bendl; //B是静态成员,可以在静态成员函数中访问 } i

文档评论(0)

1亿VIP精品文档

相关文档