静态成员变量及静态成员函数

C++中静态成员变量

一、简介

  1. 静态成员变量

    【含义】

    在类的成员变量前加上static关键字,就是把该变量声明为静态成员变量。

    【特点】

    1>.静态成员变量在内存中只有一份,所有的类对象全局共用它。

    2>.在类中对成员变量加上static关键字,进行变量的类型申明。

    在内的外部对其进行初始化。

    初始化方法:数据类型 类名::变量名 = 初始化值

    3>.静态成员变量为类的一部分而不是对象的一部分。

    【延伸】

    • 只有在定义对象时,操作系统才给分配内存。
    • 含有静态成员变量的类用sizeof()计算大小时,计算的知识非静态成员的总的大小,因为静态成员变量存储在.data区,而sizeof计算的是栈区的大小。
  2. 静态成员函数

    【含义】

    在类的成员函数前加上static关键字,就是把该变量申明为静态成员函数。

    【特点】

    1>.静态成员函数在内存中也只有一份,是类的一部分,所有对象拥有共同的静态函数,不依赖与任何一个对象,故静态成员函数中没有this指针。

    2>.静态成员函数只能访问惊天成员变量,若是需要访问普通变量,则需要指明对象。

    3>.非静态成员函数可以访问静态与非京台成员变量。

二、代码论证

  • 下面是一段代码用于验证静态成员函数及成员变量的相关特性
#include <iostream>

using namespace std;

class Demo{
private:
	 int x; 
	 int y;
	 static int sum;
public: 

	int sex_value(int a,int b)
	{
		this->x = a;	
		this->y = b;
		sum = a + b;
	}

	int get_x(){ 
		return this->x;	
	}

	int get_y(){
		return this->y;	
	}
	
	int get_sum(){
		return sum;	
	}
#if 0
	static void show(){
	// 静态成员函数中无this指针,只能访问静态变量
	//	cout << "x = "  << x << endl;
	//	cout << "y = "  << y << endl;
		cout << "sum = "  << sum << endl;
	}
#else
	static void show(Demo &obj){
	// 静态成员函数中无this指针,只能访问静态变量
		cout << "x = "  << obj.x << endl;
		cout << "y = "  << obj.y << endl;
		cout << "sum = "  << sum << endl;
	}
#endif
};

int Demo::sum = 0;

int main(int argc, const char *argv[])
{
	Demo d;

	d.sex_value(10,20);

	cout << "x = "  << d.get_x() << endl;
	cout << "y = "  << d.get_y() << endl;
	cout << "sum = "  << d.get_sum() << endl;

	d.show(d);
	return 0;
}

发布了49 篇原创文章 · 获赞 15 · 访问量 9270

猜你喜欢

转载自blog.csdn.net/wit_732/article/details/98469955