永发信息网

c++ 课本上的一句话我看不懂

答案:1  悬赏:20  手机版
解决时间 2021-07-19 14:37
c++ 课本上的一句话我看不懂
在对类的静态私有数据成员初始化的同时,还可以引用类的其他私有成员.
例如,如果一个类T 存在类型为T的静态私有对象,那么可以引用该类的私有构造函数将其初始化.
最佳答案

这个问题怎么说呢
首先 明确一下
class T{
private:
static T a;
};
这里的static T a 和static int a 是一样的东西 ——类T的静态数据成员
那么既然是私有的 静态数据成员变量
在内存里 静态变量存放在静态存储区.放在静态存储区的数据在整个程序运行其间持续有效
你可以把静态成员变量看做是一个作用域是类的范围内的全局变量
#include stdafx.h
#include
using namespace std;
class T{
public:
int a;\x05T(){a=0;}
T(){};
int getb(){return b.suma();}
private:
static T b;
int suma(){a=(b.a+1) ;return a;}
};
T T::b;//利用T类的构造函数初始化了静态成员b
int _tmain(int argc,_TCHAR* argv[])
{int x,y;
cin>>x;
T *c=new T(); //当我们创建了T的一个实例c时 我们可以发现c的静态私有成员b的情况 b的公有成员a的值已被初始化为0 当我们调用 c的公有函数 getb时 getb调用了b私有成员suma对b的公有成员a加了1并且返回a的值
x=c->getb();
couty;
return 0;
我想这个例子能够大概说明白吧~
再问: 1 T 类里面又有 T类的对象 这样可以吗 我都快晕了 2 T T::b;//利用T类的构造函数初始化了静态成员b , 是不是说 无论T是否有实例化, T b 都会被初始化?
再答: 1你不要把b看做是个什么神奇的东西 他和static int xx 是一样的地位 就是一个静态的私有成员 2 静态的私有成员就是类的一个属性 而不是依赖于对象而存在的 抱歉前面这一句 /当我们创建了T的一个实例c时 我们可以发现c的静态私有成员b的情况 b的公有成员a的值已被初始化为0 我貌似说的不准确 静态成员变量他并不是对象的一个属性而是类的一个属性 你可以把他想成是一种全局的变量 即使你建n个对象 对这些变量内的成员做处理 静态成员变量也不会因为其中任何一个对象的改变而变 也不会因为任何一个对象的释放而销毁 静态数据成员的初始化必须在类外 然后初始化是程序一开始就进行的 你可以假如断点 你会发现T T::b;是在main之前就进行了的 所以b这个对象就是main开始前 就被创建了 而当程序结束时才释放 3 最后你再来考虑b的内部 他只是比int复杂了一点 是一个有结构的类T的对象 而不是一个32位只存放一个二进制数的内存空间


我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
请问现在的远古精灵戒指值多少钱啊!
韩剧《热血商人》更新时间是星期几啊?
驱动图标?????
电脑摄像头哪个好,笔记本电脑摄像头监控哪款
加急- -关于DNF散打装备问题
在微机中,一般把一个二进制位作为一个存储单
去年的总NBA冠军是谁
网络可以当真么、?为什么?
诗歌鉴赏题方法,诗歌鉴赏方法?
谁邀请我开通游戏人生,留下QQ,有密码问题的
189号码开通qq会员怎么会有信息发来啊?
我买的瑞星的杀毒软件已将装过一台电脑了,现
现在的读书有个P用哈!
没有发彩信,但是扣我的彩信费?这两个月出现
qq旋舞怎么再次点亮啊
推荐资讯
10月14日是什么日子?情人节吗?
奇怪的数学符号
怎样才能调整好自己的心态?
qq三国得陇望蜀JS60技能多钱?
诺基亚5520型号的手机可以看电子书吗?
aaron carter—I am all about you歌词
朋友们。帮帮我吧 !!!赏析一句话,着急啊
我很想知道爱一个人会错吗?
N86亚太板郑州最新报价
居住证有哪些优惠
我的种子部分没有恢复?还有为什么我的菜只补
谁有能开通游戏人生的QQ
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?