静态成员变量

共享静态数据成员对象:类成员或者成员函数(类的范围内)

普通数据成员和静态数据成员的区别

1.普通数据成员属于类的对象,对象被创建后,普通数据成员才会分配内存。静态数据成员属于整个类,即使没有创建对象,它也存在。

2.只能在类外进行初始化,默认初始化为0;

3.可以使用类的对象,引用或指针访问静态数据成员

4.类的任何成员函数都可以访问类的静态数据成员

5.和普通成员一样,都可以有访问级别(如public),可以具有返回值,const修饰等

静态数据成员的好处:

1.节约存储空间(比如多个对象共享类的静态数据成员)

2.方便操作(银行的利息改变,所有的对象的利息会改变)

3.信息隐藏,提高安全性(把静态数据成员设置为private,对象不能直接调用它,全局变量不能保证安全性)

【静态数据成员被访问】

1.普通成员函数

2.静态成员函数

3.类的对象,引用或指针

【静态数据成员的特点】
1。静态数据成员和静态变量一样,始终保持原值,运行之后才释放


2。非静态数据成员未定义对象之前,是不占有内存的,而静态数据成员变量是占有内存的


3.静态数据成员(不属于对象的,属于类)(在对象外,单独占有一个内存):


4.与全局变量的区别:不被多个函数改变它的值,结果是每个对象中的数据成员的值相同。


5.不定义对象,静态数据成员也可以被引用


6.错误例子:"BOX(int a):b(a)"(b为静态数据成员,BOX为公用普通成员函数)


7.若被定义为公有的,可以直接在类外引用(对象),通过公用的成员函数引用
也可以被类引用cout<<BOX::a <<endl;(a为静态数据函数))


8. 若被定义为私有的,不可直接在类外(对象)引用,只通过公用成员函数

9.不能再xxx.h头文件中进行初始化,必须放在xxx.cpp文件中,否则会造成重复定义

*******************************************************************

例子:

class color
{
public:
 color();
 ~color();
 int add(int a, int b);
 static int kind(int a, int b);//不占有内存
private:
 int a, b;
 static int s;
};
int color::s = 0;//静态数据成员初始化,只能在类外。若未赋初值,自动默认为0;只占有一个内存。
int color::add(int a, int b)
{
 cout << "你好可爱!" << " " << a << " " << b << endl;
 return 0;
}
color::color()
{
}
color::~color()
{
}
int color::kind(int a, int b)
{
 s = a + b;
 cout << "静态成员函数中调用静态成员变量:" << s << endl;
 return 0;
}
int main()
{
 color::kind(2, 4);
 color d1;
 d1.~color();
 d1.kind(3, 12);;//静态成员函数被对象引用
 d1.add(2, 3);
 return 0;
}

打印结果:


访问静态数据成员:

Myclass::Myclass(int a,int b,int c)
{
this->a=a;
this->b=b;
this->c=c;
Sum+=a+b+c; //非静态成员函数可以访问静态数据成员(Sum)
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值