【发布时间】:2011-12-28 08:38:00
【问题描述】:
我只是想知道设置继承成员的最有效方法是以及以下代码是否可以使用:
这是基类的声明:
class cEntity{
private:
int X, Y;
int Height, Width;
public:
cEntity();
cEntity(int x,int y,int h,int w);
~cEntity();
void setX(int x){X=x;};
void setY(int y){Y=y;};
void setCoords(int x, int y){X=x;Y=y;};
void setHeight(int h){Height = h;};
void setWidth(int w){Width = w;};
void setArea(int h, int w){Height=h;Width=w;};
int getX(){return X;};
int getY(){return Y;};
//void getXY(int,int);
int getHeight(){return Height;};
int getWidth(){return Width;};
//void getArea(int,int);
};
这里是派生类的构造函数:
cOrganism::cOrganism () {
setCoords(0,0);
setArea(0,0);
Name = "UNKNOWN";
Health = 100;
MaxHealth = 100;
HealthHiRange =100;
HealthLoRange = 100;
};
所以。在派生类的构造函数中调用setCoords()和setArea()可以吗?
【问题讨论】:
-
不,这不是坏习惯。不好的做法是[从派生构造函数调用虚拟方法][1]。 [1]:stackoverflow.com/questions/496440/…
-
@carleeto:从构造函数调用虚方法在 C++ 中完全没问题。这在 Java 中很危险。在 C++ 中,它在正确的程序中是安全且明确定义的。
标签: c++ oop class methods constructor