谁能帮忙解释一下这段代码???

5_555 2001-10-26 11:23:13
class Time {
public:
Time(int c=0, int i=1);
private:
int count;
const int time;
}

Time::Time(int c, int i)
: time(i) // 什么意思???
{
count=c;
}
...全文
65 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
lsc111 2001-10-26
  • 打赏
  • 举报
回复
那是对保护成员进行初始化。
k320 2001-10-26
  • 打赏
  • 举报
回复
本来就可以通过这样的方式初始化的,这叫initializer list。如果data member是const,则必须这样初始化,其他的就无所谓了,不过有些情况还是需要在initializer list中初始化的,你可以参考《Essential C++》和《Thinking in C++》。
bdsc 2001-10-26
  • 打赏
  • 举报
回复
:time(i) ----- 初始化成员列表

构造函数也是函数,在执行时他所操作的变量(内存区域)必须已经存在。

int count;在构造函数执行时已经初始化成0,但const int time不行因为const,所以你要给c++个机会来初始化const类似的成员(包括基类[base class],包含类[composition class]等等),这些内存分配好了,再执行构造函数。
magicblue 2001-10-26
  • 打赏
  • 举报
回复
成员列表初始化,在进入构造函数之前。常量time被初始化为i的值。如果放到构造函数体中就是错误的。const,reference,member object,virtual base(?)必须用此种方式
5_555 2001-10-26
  • 打赏
  • 举报
回复
是不是因为time is const int
5_555 2001-10-26
  • 打赏
  • 举报
回复
呵呵,我正在学习 :)

是不是可以这么说,构造函数初始化time and cont
k320 2001-10-26
  • 打赏
  • 举报
回复
初始化数据成员time,相当于time = i。建议多看书。

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧