静态成员数据与函数-Static member data and functions

 今天我们来学习一下C++中的静态成员数据与函数——这一部分主要服务于不同对象间实现数据共享。

1. 静态数据成员

  • 定义:静态数据成员是属于类本身而非类的对象的。这意味着无论创建多少个类的对象,都只有一个静态数据成员的副本。
  • 声明:在类定义中,使用static关键字声明静态数据成员。
  • 初始化:静态数据成员必须在类外部进行初始化。这通常在类的实现文件(.cpp)中进行。
  • 访问:可以通过类的对象或类名本身来访问静态数据成员。
#include <bits/stdc++.h>
class MyClass {  
public:  
    static int count; // 声明静态数据成员  
    MyClass() {  
        count++; // 构造函数中增加计数  
    }  
};  
  
int MyClass::count = 0; // 初始化静态数据成员  
  
int main() {  
    MyClass obj1;  
    MyClass obj2;  
    MyClass obj3;
    std::cout << MyClass::count; // 输出3  
    return 0;  
}

 

要特别注意的是公用的静态数据成员可以初始化,但只能在类外进行初始化 

int MyClass::count = 0;  

 下面给出一段关于静态成员数据的代码示例code:

#include <bits/stdc++.h>
using namespace std;
class Box
{
	public:
		Box(int , int );
		int volume();
	//private:
		static int height;
		int width;
		int length; 
 } ;
 Box::Box(int w, int len)
 {
 	width = w;
 	length = len ;
 }
int Box::volume()
{
	return (height * width * length);
 } 
 int Box::height = 10;
 int main()
 {
 	Box a(15,20),b(20,30);
	cout<<a.height<<endl;	
	cout<<b.height<<endl;
	cout<<Box::height<<endl;	
	cout<<a.volume()<<endl;	
	return 0;
 }

 

 

#include <bits/stdc++.h>
class MyClass {  
public:  
    static int count;  
    MyClass() {  
        count++;  
    }  
    static void printCount() { // 声明静态成员函数  
        std::cout << "Count: " << count << std::endl;  
    }  
};  
  
int MyClass::count = 0;  
  
int main() {  
    MyClass obj1;  
    MyClass obj2;  
    MyClass::printCount(); // 输出Count: 2  
    return 0;  
}

2. 静态成员函数

  • 定义:静态成员函数是类的函数,但它不依赖于类的任何特定对象。静态成员函数只能访问静态数据成员和其他静态成员函数。
  • 声明:在类定义中,使用static关键字声明静态成员函数。
  • 调用:可以通过类的对象或类名本身来调用静态成员函数。

 同样的我们在类内也可定义一个静态成员函数来访问静态成员数据如:

static void printCount() { // 声明静态成员函数  
        std::cout << "Count: " << count << std::endl;  
    }  

注意事项

  • 静态成员变量是类所有对象共享的,不占用对象的内存空间。
  • 静态成员函数不能访问类的非静态成员变量,因为非静态成员变量依赖于类的对象。
  • 静态成员在类外定义和初始化,并且初始化时不加任何修饰符,如static
  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值