C++类中静态变量和静态办法运用介绍ITeye - 威尼斯人

C++类中静态变量和静态办法运用介绍ITeye

2019年02月24日13时20分50秒 | 作者: 鑫鹏 | 标签: 静态,成员,变量 | 浏览: 1664

静态成员的提出是为了处理数据同享的问题。完成同享有许多办法,如:设置全局性的变量或目标是一种办法。可是,全局变量或目标是有局限性的。这一章里,咱们首要叙述类的静态成员来完成数据的同享。

静态数据成员

在类中,静态成员能够完成多个目标之间的数据同享,而且运用静态数据成员还不会损坏躲藏的准则,即确保了安全性。因而,静态成员是类的一切目标中同享的成员,而不是某个目标的成员。

运用静态数据成员能够节约内存,由于它是一切目标所公有的,因而,对多个目标来说,静态数据成员只存储一处,供一切目标共用。静态数据成员的值对每个目标都是相同,但它的值是能够更新的。只要对静态数据成员的值更新一次,确保一切目标存取更新后的相同的值,这样能够进步时刻功率。

静态数据成员的运用办法和留意事项如下:

1、静态数据成员在界说或阐明时前面加关键字static。//静态变量的界说

2、静态成员初始化与一般数据成员初始化不同。静态数据成员初始化的格局如下:

数据类型 类名 :: 静态数据成员名 = 值   //静态变量的初始化

这表明:

  (1) 初始化在类体外进行,而前面不加static,(这点需求留意)以免与一般静态变量或目标相混杂。

(2) 初始化时不加该成员的拜访权限控制符private,public等。

(3) 初始化时运用效果域运算符来标明它所属类,因而,静态数据成员是类的成员,而不是目标的成员。

3、静态数据成员是静态存储的,它是静态生存期,有必要对它进行初始化。

4、引证静态数据成员时,选用如下格局:

类名 :: 静态成员名   //静态变量的运用办法

假如静态数据成员的拜访权限答应的话(即public的成员),可在程序中,按上述格局来引证静态数据成员。

下面举一比如,阐明静态数据成员的运用:

#include
class Myclass
{
public:
Myclass(int a, int b, int c);
void GetNumber();
void GetSum();
private:
int A, B, C;
static int Sum;  //私有,界说
};int Myclass::Sum = 0;  //初始化

Myclass::Myclass(int a, int b, int c)  //结构办法
{
A = a;
B = b;
C = c;
Sum += A+B+C;  //一般办法调用静态成员变量,留意是依照一般的变量调用办法调用,静态成员变量的前面没有类名::
}

void Myclass::GetNumber()
{
cout ”Number=”;
}

void Myclass::GetSum()
{
cout ”Sum=”;
}

void main()
{
Myclass M(3, 7, 10),N(14, 9, 11);
M.GetNumber();
N.GetNumber();
M.GetSum();
N.GetSum();
}


从输出成果能够看到Sum的值对M目标和对N目标都是持平的。这是由于在初始化M目标时,将M目标的三个int型数据成员的值求和后赋给了Sum,所以Sum保存了该值。在初始化N目标时,对将N目标的三个int型数据成员的值求和后又加到Sum已有的值上,所以Sum将保存另后的值。所以,不论是经过目标M仍是经过目标N来引证的值都是相同的,即为54。

静态成员函数

静态成员函数和静态数据成员相同,它们都归于类的静态成员,它们都不是目标成员。因而,对静态成员的引证不需求用目标名。

在静态成员函数的完成中不能直接引证类中阐明的非静态成员,能够引证类中阐明的静态成员(这点非常重要)。假如静态成员函数中要引证非静态成员时,可经过目标来引证。下面经过比如来阐明这一点。

#include
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)
{
cout ”A=” cout ”B=”
}

int M::B=0;
void main()
{
M P(5),Q(10);
M::f1(P); file://调用时不必目标名
M::f1(Q);
}


读者能够自行剖析其成果。从中可看出,调用静态成员函数运用如下格局:

类名 :: 静态成员函数名 ( 参数表
版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表威尼斯人立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章