微前端架构如何改变企业的开发模式与效率提升
566
2022-11-17
C++静态成员和友元成员的理解
面向对象程序设计课堂笔记
对静态成员的理解
在之前的学习过程中我们已经了解到模块数据的共享与保护机制,比如:数据成员对外不公开,对象里定义的变量也具有作用域等等。
对于一个类,函数成员是所有的对象相同的,而数据成员则是各自不同的。如果这时候我们引入了一个新的数据成员,对于所有的对象来说,他的值都是相同的,此时再去对每一个对象定义一次此数据成员则显得冗杂。由此,我们引入了静态数据成员。
根据上一段的解释,可以看出静态数据成员的简单定义:是类共有的数据,类的所有成员都维护这一个数据。
在代码中这样定义:
class A{ private: int b;///一般数据成员 static int exnum;///静态数据成员}
对于程序中的模块,都会在内存中占据一定的存储空间,那么静态数据成员exnum又是如何存储的呢?
因为静态数据成员是类共有的成员,所以他不会占用对象的存储空间。可以结合下面的代码进行理解:
#include 运行结果如图: 因为int类型的b在内存中占四个字节,也就说明了exnum并没有存储在对象a中。 具体有关的理解的博客:传送门 变量在使用前都需要初始化,这个也不例外。初始化的语法如下: int A::exnum=0; 其中“::”是预作用符,表示后面的操作对象属于哪个类。 定义一个东西后,我们需要使用,那么我们如何访问这一成员呢。 通过之前的学习,我们可以知道下面的方式是可以访问exnum的: #include 以上方式是通过对象来访问静态成员,这也就说明了对象具有静态成员的访问权。 但是如果我们还没有构造对象,又该如何访问呢。 前面静态数据成员的定义已经指明,静态成员属于类,所以我们可以通过通过类名直接访问。理论上如果exnum是public的,这是可行的,但是exnum是私有的数据成员,由于模块的安全性,语法并不支持这种操作。 这时候我们希望某些函数的调用也不依赖于对象,就可以再引进一个静态函数了,与静态数据成员类似,这一函数也是属于类,由类直接调用。 代码如下: #include 关于对友元函数的理解都在代码里了~ 作业: #include 完结撒花~
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~