从“追求尽量不出错”,到正视“|

如此而已~~~

园龄:3年3个月粉丝:0关注:12

C++类中的静态成员

C++类中的静态成员:(所有问题的关键都在其的“共享性”上)

关键词:static

静态成员变量:

//静态成员变量
//所有对象"共享"同一份数据 (哪一个对象进行了更改其它也会跟着一起变,源于其“共享性”)
//在 编译阶段 分配内存 (还没有双击exe文件之前 所在全局区)

使用方法:类内声明、类外初始化

访问方式:通过对象进行访问 或 者通过类名进行访问

参考代码:

#include <iostream>
using namespace std;
class Person
{
public:
//此为类内声明
static int m_A;
//更换权限是因为 静态成员变量也是有访问权限的
private:
//此为类内声明
static int m_B;
};
//此为类外初始化
//注意:初始化时一定要声明,这个静态成员变量所属的作用域。
int Person::m_A = 100;
int Person::m_B = 200;
//void test01()
//{
// Person P;
// cout << P.m_A << endl;
//
// Person P2;
// P2.m_A = 200;
// cout << P.m_A << endl; //改变后数据改变了
//}
void test01()
{
//静态成员变量 不属于某个对象上,所有对象都共享同一份数据
//因此静态成员变量有两种访问方式
//1、通过对象进行访问
/*Person P;
cout << P.m_A << endl;*/
//2、通过类名进行访问 因为共享 所以不需要通过构建一个对象 就可以访问
cout << Person::m_A << endl;
//cout << Person::m_B << endl; 私有权限无法访问
}
int main()
{
test01();
system("pause");
return 0;
}

静态成员函数:

//静态成员函数
//所有对象"共享"一个函数
//静态成员函数只能访问静态成员变量

使用方法:类内声明与定义

访问方式:通过对象进行访问 或 者通过类名进行访问 且 “其本身只能够访问静态成员变量”

参考代码:

#include <iostream>
using namespace std;
//静态成员函数
//所有对象"共享"一个函数
//静态成员函数只能访问静态成员变量
class Person
{
//同样静态成员函数 也是有访问权限的
public:
//原因:静态成员函数是可以通过类名来进行访问的 是共享的
//如果在 静态成员函数里面有非静态成员变量
//那么系统会不清楚 所更改的是哪一个对象的 非静态成员变量
//静态成员函数
static void func()
{
m_A = 100; //静态成员函数是可以访问静态成员变量 (共享的 不需要知道是哪一个的)
//m_B = 200; //静态成员函数 不可以访问 非静态成员变量 无法区分到底是哪一个对象的m_B
cout << "static void func调用" << endl;
}
static int m_A; //静态成员变量
int m_B; //非静态成员变量
private:
static void func2()
{
cout << "static void func的调用" << endl;
}
};
int Person::m_A = 0;
void test01()
{
//1、通过对象访问
Person P;
P.func();
//2、通过类名访问
Person::func();
//Person::func2();
}
int main()
{
test01();
system("pause");
return 0;
}

本文作者:如此而已~~~

本文链接:https://www.cnblogs.com/fragmentary/p/16417910.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   如此而已~~~  阅读(51)  评论(0编辑  收藏  举报
//雪花飘落效果
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起