当前位置:   article > 正文

c++ 静态函数_c++ 静态构造函数

c++ 静态构造函数

0.静态成员函数只能访问静态成员变量,但普通成员函数却能访问所有变量包括静态成员变量

1、对象与对象之间的成员变量是相互独立的.要想共用数据,则需要使用静态成员或静态方法

2、只要在类中声明静态成员变量,即使不定义对象,也可以为静态成员变量分配空间,进而可以使用静态成员变量.(因为静态成员变量在对象创建之前就已经被分配了内存空间)

3、静态成员变量虽然在类中,但它并不是随对象的建立而分配空间的,也不是随对象的撤销而释放(一般的成员在对象建立时会分配空间,在对象撤销时会释放).静态成员变量是在程序编译时分配空间,而在程序结束时释放空间.

4、初始化静态成员变量要在类的外面进行.初始化的格式如下:数据类型 类名::静态成员变量名 = 初值;

5、不能用参数初始化表,对静态成员变量进行初始化.

6、即可以通过类名来对静态成员变量进行引用,也可以通过对象名来对静态成员变量进行引用.

7、普通成员函数和静态成员函数的区别是:

普通成员函数在参数传递时编译器会隐藏地传递一个this指针,通过this指针来确定调用类产生的哪个对象;

但是静态成员函数没有this指针,不知道应该访问哪个对象中的数据;所以在程序中不可以用静态成员函数访问类中的普通变量.

  1. #include <iostream>
  2. using namespace std;
  3. class CShop
  4. {
  5. public:
  6. CShop(int size);
  7. void ShowSize();
  8. static void ShowPrice(); //声明静态成员函数用来显示价格
  9. static int ChangePrice(int price); //声明静态成员函数用来更改价格
  10. private:
  11. int m_size; //声明一个私有成员变量
  12. static int m_price; //声明一个私有静态成员变量
  13. };
  14. CShop::CShop(int size)
  15. {
  16. m_size = size;
  17. }
  18. void CShop::ShowSize()
  19. {
  20. cout << "商品数量:" << m_size << endl;
  21. }
  22. void CShop::ShowPrice()
  23. {
  24. cout << "商品价格:" << m_price << endl;
  25. }
  26. int CShop::ChangePrice(int price)
  27. {
  28. m_price = price;
  29. return m_price;
  30. }
  31. int CShop::m_price = 100; //初始化静态成员变量
  32. int main(int argc, char * argv[])
  33. {
  34. CShop::ShowPrice();
  35. CShop::ChangePrice(200);
  36. CShop::ShowPrice();
  37. CShop shop(50);
  38. shop.ShowSize();
  39. shop.ShowPrice();
  40. return 0;
  41. }
 
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/44359
推荐阅读
相关标签
  

闽ICP备14008679号