一个派生类的问题。

时间:2022-11-26 05:48:58
#include<iostream.h>
  class A
  {
   public:
          void setx(int a){x=a;}
          void sety(int b){y=b;}
          int getx() const {return x;}
          int gety() const {return y;}
   protected:
          int x;
   private:
          int y;
  };
  class B:private A
  {
   public:
          void setBx(int a){setx(a);}
          void setBy(int b){sety(b);}
          int getBx(){return getx();}
          int getBy(){return gety();}
          int getsum()(return x + return y;}        //求和函数
  };
void main()
{
 B b;
 b.setBx(2);
 b.setBy(3);
 cout<<"x="<<b.getBx()<<"\ty="<<b.getBy()<<endl;
 cout<<"x+y="<<b.getsum()<<endl;

书上这么写的。可是我觉得觉得这个程序有一个地方不对,在类B里的求和函数里不应该用return y,因为变量y在类A里是私有的,是不能在类B里直接调用的。由于我学识尚浅,不知是我错了还是书写错了,望各位大虾指点一二。还有return语句除了返回函数结果之外,是否还有别的功能?
先谢了!

5 个解决方案

#1


不好意思,最后少了一个“}”    ^o^

#2


你上机试过吗?感觉好像确实不能。

#3


return x + return y是什么?看不懂

#4


求和函数的左花括号写成了左括号,“return x + return y;”写错了,出了两个return 。
求和函数应为

       int getsum()(return x + gety();}        //求和函数

变量y的获取不仅有关于在类A里是否是私有的,也有关于类B与类A之间的继承关系。

#5


是书上写错了。
return x + return y应该是return(getx() + gety())
return的意识是退出函数,并且返回函数的类型值。

看如此不好的书即浪费时间又消磨信心!!!建议你买一本钱能的《C++程序设计》看。 

#1


不好意思,最后少了一个“}”    ^o^

#2


你上机试过吗?感觉好像确实不能。

#3


return x + return y是什么?看不懂

#4


求和函数的左花括号写成了左括号,“return x + return y;”写错了,出了两个return 。
求和函数应为

       int getsum()(return x + gety();}        //求和函数

变量y的获取不仅有关于在类A里是否是私有的,也有关于类B与类A之间的继承关系。

#5


是书上写错了。
return x + return y应该是return(getx() + gety())
return的意识是退出函数,并且返回函数的类型值。

看如此不好的书即浪费时间又消磨信心!!!建议你买一本钱能的《C++程序设计》看。