欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 会展 > C++ static静态

C++ static静态

2024/11/14 18:23:06 来源:https://blog.csdn.net/Jason_from_China/article/details/142760674  浏览:    关键词:C++ static静态

 个人主页:Jason_from_China-CSDN博客

所属栏目:C++系统性学习_Jason_from_China的博客-CSDN博客

所属栏目:C++知识点的补充_Jason_from_China的博客-CSDN博客

概念概述

  • 用 static 修饰的成员变量,称之为静态成员变量,静态成员变量一定要在类里面生命,在类外进行初始化。
  • 静态成员变量为所有类对象所共享,不属于某个具体的对象,不存在对象中,存放在静态区。
  • 用 static 修饰的成员函数,称之为静态成员函数,静态成员函数没有 this 指针。
  • 静态成员函数中可以访问其他的静态成员,但是不能访问非静态的,因为没有 this 指针。
  • 非静态的成员函数,可以访问任意的静态成员变量和静态成员函数。
  • 突破类域就可以访问静态成员,可以通过类名::静态成员或者对象.静态成员来访问静态成员变量和静态成员函数。
  •  静态成员也是类的成员,受 public、protected、private 访问限定符的限制。
  • 静态成员变量不能在声明位置给缺省值初始化,因为缺省值是个构造函数初始化列表的,静态成员变量不属于某个对象,不走构造函数初始化列表。

static的使用1:

  • 静态成员函数的使用是很结合构造和析构的,静态成员函数是可以直接突破类域来访问静态成员函数
  • 不是静态成员函数就不能突破类域直接访问,我们需要创建一个对象,利用对象访问成员函数

  • 如果不设置静态成员函数,那么你需要访问成员变量,就需要创建一个对象才能访问成员函数,从而导致麻烦。所以我们可以直接设置为静态成员函数。

  • 这里有一个注意事项,就是不是静态成员变量,不能用静态成员函数访问,不然会导致报错

static的使用2:

这里我使用vs编译器,vs编译器不支持可边长数组,所以代码有点不一样

#include<iostream>
using namespace std;
//求1+2......+n//不能使用乘除
class sum
{
public:sum(){_ret += _i;++_i;}//获取ret最终的结果static int _GetRet(){return _ret;}
private:static int _i;static int _ret;
};
int sum::_i = 1;
int sum::_ret = 0;class solution
{
public:int _solution(int n){for (int i = 0; i < n; i++){//创建n次构造函数,n次构造函数++会依次递加sum s;}//创建n次数之后,我们计算出来数值,此时我们可以选择数值来进行接收int ret = sum::_GetRet();//打印数值cout << ret << endl;//返回数值return sum::_GetRet();}
};int main()
{solution s;int ret = s._solution(100);//这里接收进行验证,发现是正确的cout << ret << endl;//打印出来return 0;
}

sum

  1. 成员变量:

    • static int _i:静态成员变量,用于记录当前要累加的数字。初始化为 1。
    • static int _ret:静态成员变量,用于存储累加的结果。初始化为 0。
  2. 构造函数:

    • 每次创建 sum 类的对象时,构造函数被调用。在构造函数中,将当前的 _i 值累加到 _ret 中,然后将 _i 的值自增。这样,每次创建对象就相当于进行一次累加操作。
  3. 静态成员函数 _GetRet()

    • 用于获取 _ret 的值,即累加的结果。

solution

  1. 成员函数 _solution(int n)
    • 这个函数接受一个整数 n,目的是计算从 1 加到 n 的和。
    • 通过一个循环创建 n 次 sum 类的对象。每次创建对象时,sum 类的构造函数会自动进行累加操作。
    • 最后,通过 sum::_GetRet() 获取累加的结果,并将其赋值给 ret,然后打印和返回这个结果。

static的使用3:

构造函数:C是全局变量先进行构造,其次就是局部变量依次进行构造

析构函数:先析构局部变量,先构造的后析构,所以先析构B,其次是A,最后是D,全局变量生命周期伴随函数的结束

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com