静态数据成员和静态成员函数用法精髓

本文详细介绍了C++中静态数据成员及静态成员函数的使用方法,包括它们的初始化、访问特性以及注意事项。并通过实例展示了如何在类中声明并使用这些特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这里总结了静态数据成员和静态成员函数的用法要求和注意事项,供互相交流学习使用。

#include<iostream>
using namespace std;
class A
{
private:
int m_data;
static int s_data;
mutable int c_data;
public:
A(int data = s_data,int data2 = 777):m_data(data),c_data(data2){}
//1.静态数据成员可以作为默认实参
static int get_sdata();
void display()
{
cout << m_data << endl;
cout << s_data << endl;
cout << c_data << endl;
}
void func() const
{
//m_data ++;
s_data ++;//2.静态数据成员可以使用const类型的成员函数
c_data ++;
}
};
int A::s_data = 666;//3.必须在类外初始化静态数据成员s_data
int A::get_sdata()
{
return s_data;

//return *this;//若想在静态成员函数里返回*this,是错误的

//关于静态成员函数,这里要补充一点,不可在静态成员函数里直接调用非静态数据成员,要通过定义类对象间接调用非静态数据成员

}
int main()
{
/*
cout << "s_data:" << A::s_data << endl;//4.可以使用A::来显示或调用静态成员变量,这里A为作用域
A a1;
A a2;
A a3;
a1.s_data ++;
a2.s_data ++;
a3.s_data ++;
A::s_data ++;
cout << "s_data:" << a2.s_data << endl;//5.以上4行共享同一个变量s_data


cout << "sizeof:" << sizeof(A) << endl;//6.通过sizeof说明static不属于任何一个对象,
//6.并不占用类空间
*/
A a;
a.display();

a.func();
a.display();
//cout << "&s_data:" << &a.s_data << endl;
cout << A::get_sdata() << endl;//静态成员函数不属于任何一个对象
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值