您的位置:首页 > 编程语言 > C语言/C++

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

2016-05-14 22:26 357 查看
#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:12
num:12
num:132
num:68
Press any key to continue
*/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: