在编写类的构造函数时,我经常问自己应该使用初始化的成员变量还是构造函数参数。这里有两个例子来说明我的意思:
构造函数参数
class Foo {
public:
Foo(int speed) :
mSpeed(speed),
mEntity(speed)
{ }
private:
int mSpeed;
Entity mEntity;
}
成员变量
class Foo {
public:
Foo(int speed) :
mSpeed(speed),
mEntity(mSpeed)
{ }
private:
int mSpeed;
Entity mEntity;
}
此外,在构造函数主体中使用变量也会出现同样的问题。
构造函数参数
class Foo {
public:
Foo(int speed) :
mSpeed(speed)
{
mMonster.setSpeed(speed);
}
private:
int mSpeed;
Monster mMonster;
}
成员变量
class Foo {
public:
Foo(int speed) :
mSpeed(speed)
{
mMonster.setSpeed(mSpeed);
}
private:
int mSpeed;
Monster mMonster;
}
我知道这并不重要(除了一些特殊情况),这就是为什么我宁愿征求对代码设计的意见,而不是什么使它起作用,什么不起作用。
如果您需要处理一个特定的问题:哪种方式可以产生良好且一致的代码设计,并且其中一种方式是否具有(劣势)优势?
编辑:不要忘记问题的第二部分。构造函数体中的变量呢?