C++ 类中的静态成员变量和静态函数

本文详细介绍了C++中的静态成员变量和静态方法。静态成员变量是所有类对象共享的,无需通过对象即可访问,可用于信息共享。静态方法与对象无关,不接受隐含的this指针,不能访问非静态成员。在继承中,静态成员被所有派生类共享。静态成员的优势在于避免全局变量的命名冲突和实现信息隐藏。
摘要由CSDN通过智能技术生成

目录

一、什么是静态属性?

二、静态成员变量的特点与优势

1.静态成员变量特点

2.静态成员变量优势

三、静态方法


一、什么是静态属性?

  在类型设计中,用关键字static修饰的数据成员为静态数据成员,由该类型所实例化的所有对象,共享系统为静态成员分配的一个存储空间,这个存储空间是程序执行main函数之前分配的。在实例化对象时不再为静态成员分配空间。也就是说静态成员数据不在对象空间中。

二、静态成员变量的特点与优势

1.静态成员变量特点

(1)使用静态成员变量的主要目的是信息共享

设计一个圆类作为示例,代码如下:

#include<iostream>

using namespace std;

class Circle
{
private:
	double pi;
	double radius;//圆的半径
public:
	Circle(double r = 0.0):pi(3.14),radius(r){}
	~Circle(){}

	double area()const
	{
		return pi * radius * radius;
	}
};

int main()
{
	Circle cir(12.23);
	cir.area();
	size_t sz = sizeof(cir);
	return 0;
}

 若想让圆类中所有对象都能使用这个pi值,可以将pi设计成静态数据成员:

class Circle
{
private:
	static const double pi;
	double radius;//圆的半径
public:
	//Circle(double r = 0.0):pi(3.14),radius(r){}//error
	Circle(double r =0.0):radius(r){}
	~Circle(){}

	double area()const
	{
		return pi * radius * radius;
	}
};
const double Circle::pi = 3.14;

(注:大家可以发现,如果在构造函数初始化列表中定义静态数据成员会报错,这是因为静态数据成员为所有对象共有,在类内定义则每实例化一个对象都要定义一次静态成员变量 &

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值