static在类中的应用C++

static也就是静态的意思,在类中静态的操作有两个一个是对成员变量以及成员函数,只需要在原有状态上加个static。比如int a 改成static int a就变为静态成员变量了。
重点:
静态成员变量:
1. 所有对象共享同一份数据
2. 在编译阶段分配好内存
3. 类内声明类外初始化。
静态成员函数:
1. 所有对象共享同一份数据
2. 静态成员函数只能访问静态成员变量

首先我们来讨论静态成员变量!
思路!:
1. 记住!静态成员变量一定是类外初始化的!
2. 成员变量的访问有两种!一种是通过对象去访问!一种是通过作用域访问
3. 还有一点!静态成员变量也是有访问权限的这里我就不写了,至于怎么访问到?可以通过成员函数,或者静态成员函数去访问!

#include<iostream>
#include<string>
using namespace std;

class Person
{
public:
	Person(int a ,int h)//有参构造!当然你也可以无参构造!
	{
		this->age = a;
		this->height=h;
		
	}
	void print()
	{
		cout << "姓名:"<<this->name<<"   年龄:" << this->age << "   身高:" << this->height << endl;
	}
	static string name;//静态成员变量,类内定义类外初始化!
	int age;//这是成员变量!非静态!看清楚!
private:
	int height;
};
//类外初始化静态成员变量
string Person::name = "法外狂徒张三";//

int main()
{
	Person P(23,170);//创建对象!P就是对象我这都是通过有参构造函数得出!
	//访问静态成员变量的方式有两种,一种是通过对象去访问,一种是通过类的作用域!
	//第一种:
	P.name;//如果这里改成P.name="狂徒李四",下面的也会跟着变!所以说在编译阶段分配好内存 ,并且所有对象共享数据!
	P.print();

	//第二种:
	Person P2(25, 180);//P2也是对象 
	Person::name;
	P2.print();
	return 0;
}

接下来我们看静态成员函数在类中的操作!
思路!:
1. 静态成员函数也就是在成员函数前面加的static
2. 静态成员函数不能访问非静态成员变量!但是能访问静态成员变量!
3. 获取成员函数的方式也是两种跟访问静态成员变量一样!

#include<iostream>
#include<string>
using namespace std;

class Animal 
{
public:
	Animal(string n,string w)//有参构造进行初始化!
	{
		this->name = n;
		this->weight = w;
	}

	void print()
	{
		cout << "这个动物是" << this->name << "\t年龄为:" << this->age << "\t重量为:" << this->weight << endl;
	}
	
	static void play()
	{
		cout << "这个动物表演胸口碎大石!" << endl;
		//string weight = 20;无法访问到非静态成员变量
		string pl;//这个能访问到!因为是静态成员变量
	}
	static string pl;//这个我只是拿来测试的!
	static int age;//类内定义类外初始化!
	string weight;
private:
	string name;
};
int Animal::age = 2;//类外初始化
string Animal::pl = "打个哈欠";

int main()
{
	Animal cat("猫猫","3kg");
	cat.print();
	cat.play();//这个也可以写成Animal::play();

	Animal dog("狗狗", "12kg");
	dog.print();
	Animal::play();
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值