静态变量 使用static 来定义变量,可以被全局的类使用,不需要声明就能调用,属于类成员,不属于对象成员
#include <iostream>
using namespace std;
class A{
public:
//普通成员变量在构造时定义和初始化
A(int data = 0):m_data(data){}
int m_data;
static int s_data; //不属于对象的一部分
//static const int ci = 0;
};
//静态成员变量需要在类的外部单独定义
int A::s_data = 20;
int main(void)
{
A a(10);
cout << "sizeof(a):" << sizeof(a) << endl;
//普通成员变量必须通过对象访问
cout << a.m_data << endl; //10
//静态成员变量可以通过"类名::"直接访问
cout << A::s_data << endl; //20 ok
//静态成员变量也可以通过对象访问
cout << a.s_data << endl; //20 ok
A a2(10);
a2.m_data = 11;
a2.s_data = 22;
cout << a.m_data << endl; //10
cout << a.s_data << endl; //22
return 0;
}
静态函数 使用static定义静态函数,静态函数只能调用静态变量,且静态函数只能在该文件中使用
#include <iostream>
using namespace std;
class A{
public:
//普通成员变量在构造时定义和初始化
A(int data = 0):m_data(data){}
void func1(void){
cout << "非静态成员函数" << endl;
cout << s_data << endl;
}
static void func2(void){
cout << "静态成员函数" << endl;
//cout << m_data << endl;
cout << s_data << endl;
}
int m_data;
static int s_data; //不属于对象的一部分
//static const int ci = 0;
};
//静态成员变量需要在类的外部单独定义
int A::s_data = 20;
int main(void)
{
A a(10);
a.func1();
A::func2();
return 0;
}
原文链接: https://www.cnblogs.com/hyq-lst/p/12865191.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/197170
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!