静态成员变量

迈不过友情╰ 2022-06-06 03:36 349阅读 0赞

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

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

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为静态数据函数))

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

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

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

例子:

  1. class color
  2. {
  3. public:
  4. color();
  5. ~color();
  6. int add(int a, int b);
  7. static int kind(int a, int b);//不占有内存
  8. private:
  9. int a, b;
  10. static int s;
  11. };
  12. int color::s = 0;//静态数据成员初始化,只能在类外。若未赋初值,自动默认为0;只占有一个内存。
  13. int color::add(int a, int b)
  14. {
  15. cout << "你好可爱!" << " " << a << " " << b << endl;
  16. return 0;
  17. }
  18. color::color()
  19. {
  20. }
  21. color::~color()
  22. {
  23. }
  24. int color::kind(int a, int b)
  25. {
  26. s = a + b;
  27. cout << "静态成员函数中调用静态成员变量:" << s << endl;
  28. return 0;
  29. }
  30. int main()
  31. {
  32. color::kind(2, 4);
  33. color d1;
  34. d1.~color();
  35. d1.kind(3, 12);;//静态成员函数被对象引用
  36. d1.add(2, 3);
  37. return 0;
  38. }

打印结果:

Center

访问静态数据成员:

  1. Myclass::Myclass(int a,int b,int c)
  2. {
  3. this->a=a;
  4. this->b=b;
  5. this->c=c;
  6. Sum+=a+b+c; //非静态成员函数可以访问静态数据成员(Sum)
  7. }

发表评论

表情:
评论列表 (有 0 条评论,349人围观)

还没有评论,来说两句吧...

相关阅读

    相关 静态成员变量

    1)定义静态成员变量 关键字 static 可以用于说明一个类的成员,              静态成员提供了一个同类对象的共享机制  把一个类的成员说明

    相关 静态成员变量

    共享静态数据成员对象:类成员或者成员函数(类的范围内) 普通数据成员和静态数据成员的区别 1.普通数据成员属于类的对象,对象被创建后,普通数据成员才会分配内存。静态数据成员