C++静态成员(静态成员变量、静态成员函数)与正常成员互相调用的权限问题

来源:互联网 发布:java基础教程电子书 编辑:程序博客网 时间:2024/06/13 15:49
#include <IOSTREAM>using namespace std;/*静态成员(静态成员变量、静态成员函数)与正常成员间相互调用的访问权限问题:静态成员不专属于某个对象,而是属于该类的所有对象,所有对象都可对其进行相关的操作;静态成员函数则只能使用静态的成员变量或成员函数(当然全局的除外);而静态成员函数或变量不影响其继承和被使用的权限。*/int kk = 0;class stu {public:static int num;//静态成语变量stu(int y){u = num = y;};stu(){u = 2;}void hh(){cout<<"hh"<<endl;}//static void put(){hh();u = u+2;}//错误;静态成员函数只能访问静态成员变量或静态成员函数,不可访问非静态的普通成员函数、成员变量。static void out(){cout<<"num:"<<num<<endl;}protected:int u;private:};int stu::num = 0;//对静态成员变量进行初始化,为其申请内存空间。class stu1 :public stu{public:stu1(int y):stu(y){}stu1():stu(){}void out(){cout<<"num:"<<num+u<<endl;}//静态成员函数不影响非静态成员函数对其正常的使用。protected:private:};void main(){stu zhang(12);zhang.out();zhang.~stu();stu li;li.out();//虽然对象zhang已析构,但静态成员变量num的值不会被销毁,印证了“静态成员不专属于某个对象,该类所有的对象都可对其进行操作”。stu1 liu(66);liu.out();stu1 wang;wang.out();}/*num:12num:12num:132num:68Press any key to continue*/

1 0