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之间的继承关系。
求和函数应为
int getsum()(return x + gety();} //求和函数
变量y的获取不仅有关于在类A里是否是私有的,也有关于类B与类A之间的继承关系。
#5
是书上写错了。
return x + return y应该是return(getx() + gety())
return的意识是退出函数,并且返回函数的类型值。
看如此不好的书即浪费时间又消磨信心!!!建议你买一本钱能的《C++程序设计》看。
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之间的继承关系。
求和函数应为
int getsum()(return x + gety();} //求和函数
变量y的获取不仅有关于在类A里是否是私有的,也有关于类B与类A之间的继承关系。
#5
是书上写错了。
return x + return y应该是return(getx() + gety())
return的意识是退出函数,并且返回函数的类型值。
看如此不好的书即浪费时间又消磨信心!!!建议你买一本钱能的《C++程序设计》看。
return x + return y应该是return(getx() + gety())
return的意识是退出函数,并且返回函数的类型值。
看如此不好的书即浪费时间又消磨信心!!!建议你买一本钱能的《C++程序设计》看。