C++学习笔记:静态成员指北

目录

1.静态数据成员

2.静态成员函数

        2.1声明

        2.2调用

        2.3一些特别之处


1.静态数据成员

        应用背景:如果希望所有对象中的数据成员的值是一样的,那么便可以把它定义为静态数据变量。

        这里需要注意,通常情况下,如果只声明类而未定义对象,那么只有在定义对象时才会为数据成员分配内存空间。而静态数据成员不同,它不属于某一个对象,而是所有对象都可以引用它。所以它在内存中只占有一份内存空间,只要声明了类,即使不定义对象,也会为该静态数据成员分配内存空间。

        此外,静态数据成员在程序开始时便分配了内存空间,在程序结束时释放内存空间。

        下面的程序展示了静态数据成员的使用方法。

#include<iostream>
using namespace std;

class Box
{
	public:
		Box(int,int);
		int volume();
		static int height;//以static关键字开头,把height定义为静态数据成员
		int width;
		int length;
	
 } ;
 
 Box::Box(int w,int len)
 {
 	width=w;
 	length=len;
 }
 
 int Box::height=10;//在类外对静态数据成员进行初始化 
 
 int main()
 {
 	cout<<Box::height;//通过类名对静态成员进行引用
 	Box a(100,45);
	cout<<a.height<<" "<<a.width<<" "<<a.length<<endl; 
 }
 

注意:不能通过参数初始化对静态成员进行初始化,对于上述程序中的Box类,下面定义的构造函数是错误的。

Box(int h,int w,int len):height(h){}

2.静态成员函数

        静态成员函数也可以定义为静态的。

        2.1声明

        只需在类中声明函数前加上关键字static。如下

static int sum();

        2.2调用

        在类外调用,需要类名与域运算符。

Box::sum();

       也可以使用对象名调用,但不代表该成员函数属于某一对象。

a.sum();

        2.3一些特别之处

        (1)静态成员函数不属于某一对象,属于这个类,因此静态成员函数没有this指针

        (2)静态成员函数只能访问静态数据成员,不能访问非静态数据成员

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值