首页 > 试题广场 >

下述代码有什么问题? class Kitchen { pr

[问答题]
下述代码有什么问题?
class Kitchen
{
private:
     double kit_sq_ft;
public:
      Kitchen() {kit_sq_ft = 0.0; }
      virtual double area() const { return kit_sq_ft * kit_sq_ft; }
};
class House : public Kitchen
{
private:
      double all_sq_ft;
public:
      House() {all_sq_ft += kit_sq_ft;}
      double area(const char *s) const { cout << s; return all_sq_ft; }
};

推荐
首先,这种情况不符合is-a模型,因此公有继承不适用。其次,House中的area()定义隐藏了area()的Kitchen版本,因为这两个方法的特征标不同。
发表于 2018-09-03 20:38:23 回复(0)
还有,Kitchen的kit_sq_ft是private的,
House : public Kitchen,那么,
House() {all_sq_ft += kit_sq_ft;}就没法访问kit_sq_ft了,
应该把Kitchen的kit_sq_ft改成public的。
发表于 2019-05-30 14:25:17 回复(0)