一、简介
局部变量:
全局变量:
静态成员变量:类的生命周期内,被该类的所有对象共用。
静态成员函数:类的生命周期内,被该类的所有对象共用。
二、局部成员变量和局部成员函数
主要参考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;
}