第1个回答 2008-11-02
在这里是一样的,两种没什么区别,你这里是默认构造函数C++里习惯用这种方式初始化,为了在进入构造函数体前就初始化~~
但在有的时候必须使用这种初始化列表的方式初始化,比如:
1.没有默认构造函数的类类型的成员也就是用对象初始化(这是因为构造函数分为两个阶段:1.初始化阶段,2.普通计算阶段.初始化阶段发生在计算阶段开始之前)
2.你定义的成员为const或引用类型.
时就必须像A::A(void):b(2)这样用冒号来初始化~~
第3个回答 2008-11-02
我们在C++编程过程中通常把头文件与源码文件分离。这样我们在修改或修升级的程序之中只需要修改CPP文件就可以,而不需要对程序结构对太多改动。
你那样写是可以的。 在写一些小程序的时候,那样也是完全可取的。但是你最好还是养成结构构定义与功能实现相分离的模式.
第4个回答 2008-11-02
用初始化列表比在函数体内添加执行语句的运行代价更小。
第5个回答 2020-03-17
a(i),r(a)
相当于const
int
a
=
i,const
int
&r=a;此时r是a的引用;
而:a(i),r(i)
相当于const
int
a
=
i,const
int
&r=i;
即r是i的引用了,而i在构造函数结束是释放了,他的值就是不可预期的某个值