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

来源:互联网 发布:淘宝开店收费吗2016 编辑:程序博客网 时间:2024/06/05 01:17
这里总结了静态数据成员和静态成员函数的用法要求和注意事项,供互相交流学习使用。

#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;//静态成员函数不属于任何一个对象
}
1 0
原创粉丝点击