C++基础(十一)C++的静态成员变量和静态成员函数

一、简介

局部变量:

全局变量:

静态成员变量:类的生命周期内,被该类的所有对象共用。

静态成员函数:类的生命周期内,被该类的所有对象共用。

二、局部成员变量和局部成员函数

主要参考https://blog.csdn.net/u013921430/article/details/79279114

#include <iostream>
using namespace std;
 
int global = 100;            //全局变量
 
static int sta_global = 99;   //静态全局变量
 
int P_fun(int **p)
{
	int local = 98;              //局部变量;
	static int sta_local = 97;   //静态局部变量
 
	(*p) = new int[10];         //动态对象;
	for (int i = 0; i < 10;)
	{
		(*p)[i++] = i;
	}
	sta_global--;
	global--;
	cout << "local is" << local << endl;;
	cout << "sta_local is" << sta_local << endl;
	cout << "sta_global is" << sta_global << endl;
	cout << "global is" << global << endl;
	return sta_local--;
}
 
void main()
{
	int *Point;
 
	int times = P_fun(&Point);
	cout << Point[0] << " " << endl;
	cout << endl << endl;
	delete Point;        //释放内存;
 
	times = P_fun(&Point);
	cout << Point[0] << " " << endl;
	cout << endl << endl;
	delete Point;
 
	times = P_fun(&Point);
	cout << Point[0] << " " << endl;
	cout << endl << endl;
 
	delete Point;            
 
	system("pause");
	return;
}

三、静态成员变量和静态成员函数

主要参考:http://c.biancheng.net/view/165.html

#include <iostream>
using namespace std;
class CRectangle
{
private:
    int w, h;
    static int totalArea;  //矩形总面积
    static int totalNumber;  //矩形总数
public:
    CRectangle(int w_, int h_);
    ~CRectangle();
    static void PrintTotal();
};
CRectangle::CRectangle(int w_, int h_)
{
    w = w_; h = h_;
    totalNumber++;  //有对象生成则增加总数
    totalArea += w * h;  //有对象生成则增加总面积
}
CRectangle::~CRectangle()
{
    totalNumber--;  //有对象消亡则减少总数
    totalArea -= w*h;  //有对象消亡则减少总而积
}
void CRectangle::PrintTotal()
{
    cout << totalNumber << "," << totalArea << endl;
}
int CRectangle::totalNumber = 0;
int CRectangle::totalArea = 0;
//必须在定义类的文件中对静态成员变量进行一次声明 //或初始化,否则编译能通过,链接不能通过
int main()
{
    CRectangle r1(3, 3), r2(2, 2);
    //cout << CRectangle::totalNumber; //错误,totalNumber 是私有
    CRectangle::PrintTotal();
    r1.PrintTotal();
    return 0;
}

猜你喜欢

转载自blog.csdn.net/xpj8888/article/details/85273131
今日推荐