zoukankan      html  css  js  c++  java
  • C++中static

    1.静态全局变量

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

      特点:作用域在声明此变量的文件中,其他文件即使使用extern关键字修饰其声明也不可使用

    2.静态局部变量

    #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
    ", Temp);
    	Temp++;
    }
    

      特点:内存存放在 程序的全局数据区中;只会被初始化一次,其后运行到该对象的声明是不会再初始化;不能被其作用域之外的其他模块调用,其调用范围仅限于声明该变量的函数作用域当中。

    3.静态数据成员

    #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
    ", 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;
    }
    

      特点:静态数据成员的服务对象是所有类实例化的对象;静态数据成员在对象产生之前就已被分配内存,内存存储 在全局数据区,随进程的消亡而消亡。

    4.静态成员函数

    #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
    ", T);
    }
    int main()
    {
    	TempClass ClassA(1,1,1);
    	ClassA.Show();
    	TempClass ClassB(3,3,3);
    	ClassB.Show();
    	
    	TempClass::Show();	//注意此处的调用方式.
    	return 0;
    }
    

      特点:静态成员函数比普通成员函数多了一种调用方式;静态成员函数为整个类服务,而不是具体的一个类的实例服务;静态成员函数不可以操作类中的非静态成员。

  • 相关阅读:
    收款 借贷
    Oracle Contracts Core Tables
    mtl_material_transactions.logical_transaction
    OM订单登记不了的处理办法
    子库存转移和物料搬运单区别
    WPF中使用DataGridView创建报表控件
    vi编辑器命令
    成绩管理系统中的成绩报表SQL
    ASP.Net中传递参数的常见方法
    MySQL的SET字段类型
  • 原文地址:https://www.cnblogs.com/mathyk/p/9370553.html
Copyright © 2011-2022 走看看