c++ Static详解

2018-07-23  本文已影响0人  yz_wang
面向过程

静态全局变量


#include<stdio.h> 
static int Temp = 10;
void Test();
int main()
{
    printf("Temp is %d\n", Temp);//输出:10
    Test();//输出:10
    printf("Temp is %d\n", Temp);//输出:11
    return 0;
}
void Test()
{
    Temp++;
}

静态局部变量

#include <stdio.h>
void Test();
int main()
{
    for(int i=0; i<5; i++)
    {
        Test();
    }
    return 0;
}

void Test()
{
    static Temp = 10;
    printf("Temp is %d\n", Temp);
    Temp++;
} //输出:10,11,12,13,14

静态函数

#include<stdio.h>
static void Test();
int main()
{
    Test();
    return 0;
}
void Test()
{
    printf("Is Static Fun\n");
}




面向对象

静态数据成员

#include <stdio.h>
class TempClass
{
public:
    TempClass(int a, int b, int c);
    void Show();
private:
    int a,b,c;
    static int T;
}
int TempClass::T = 0;//初始化静态数据成员
TempClass::TempClass(int a, int b, int c)
{
    this->a = a;
    this->b = b;
    this->c = c;
    T = a + b + c;
}

void TempClass::Show()
{
    printf("T is %d\n", T);
}

int main()
{
    TempClass ClassA(1,1,1);
    ClassA.Show();//输出1+1+1 = 3;
    TempClass ClassB(3,3,3);
    ClassB.Show();//输出3+3+3 = 9;
    ClassA.Show();//输出9
    return 0;
}

静态成员函数


#include <stdio.h>
class TempClass
{
public:
    TempClass(int a, int b, int c);
    static void Show();
private:
    int a,b,c;
    static int T;
}
int TempClass::T = 0;   //初始化静态数据成员
TempClass::TempClass(int a, int b, int c)
{
    this->a = a;
    this->b = b;
    this->c = c;
    T = a + b + c;
}
void TempClass::Show()
{
    printf("T is %d\n", T);
}
int main()
{
    TempClass ClassA(1,1,1);
    ClassA.Show();
    TempClass ClassB(3,3,3);
    ClassB.Show();
    
    TempClass::Show();  //注意此处的调用方式.
    return 0;
}
上一篇 下一篇

猜你喜欢

热点阅读