C++关键字statci的使用

一.static的作用有三种:限制static变量或static函数作用域,保持变量内容的持久,默认初始化为0

  • 1.被static关键字修饰的全局函数或者变量具有文件作用域,即只可以在当前文件中可见。
  • 2.被static修饰的变量会存储在静态存储区,生命周期也为从定义直至程序结束。对于局部变量, 即使在函数退出后该静态变量依然存在,然而却无法访问,此外,static修饰的变量一生只能初始化一次(常考)
  • 3.静态存储区的变量被默认为0。

二.面向对象的static

  • 1.静态数据成员
    定义:在类中数据成员的声明前加上static,该成员是类的静态成员。
    ps:静态成员并不像一般的成员变量在构造函数中初始化,而是在类实现文件中初始化,即必须在.cpp中初始化,否则程序链接会出现错误,重定义,且初始化时无需再用static关键字修饰
    例子:
class ALA
{
public:
   ALA(int a, int b, int c);
   void GetSum();

private:
   int a, b, c;
   static int d;//创建静态成员
};

int ALA::d = 0;//定义并初始化静态数据成员

特点:
对于非静态成员,每个类对象都有自己的拷贝。而静态数据成员被当作是类的成员,无论类被定义了多少个,静态数据成员都只有一份拷贝,为该类型的所有对象所共享。所以静态成员的值对每个成员都是一样的,它的值可以更新

  • 2.静态成员函数
    特点:
    1.类的静态成员函数属于整个类而非类的对象,所以没有this指针,这导致了他只可以访问类的静态数据和静态成员函数
    2.静态函数在类定义体外不能加static关键字修饰,因为成员函数本是类总用域,而在类外用static声明会将其作用扩大为文件作用域,是不合理的

猜你喜欢

转载自blog.csdn.net/l477918269/article/details/89679401
今日推荐