BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #90904同步于 2016/4/8
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

派生类怎么拿到基类成员函数的数据

beer
2016/4/8镜像同步10 回复
class Point2D{ public: Point2D(int x1, int y1):x(x1),y(y1){} double dist2D(Point2D p); virtual void printDistance(double d); private: int x,y; }; double Point2D::dist2D(Point2D p){return sqrt(double((p.x-x)*(p.x-x)+(p.y-y)*(p.y-y)));} void Point2D::printDistance(double d){cout<<ceil(d)<<endl;} class Point3D:public Point2D{ public: Point3D(int x2, int y2, int z2):Point2D(x2,y2),z(z2){} double dist3D(Point3D p); virtual void printDistance(double d); private: int z; }; double Point3D::dist3D(Point3D p){return sqrt(double((p.x-x)*(p.x-x)+(p.y-y)*(p.y-y)+(p.z-z)*(p.z-z)));} // 如何拿到2D的距离 void Point3D::printDistance(double d){cout<<ceil(d)<<endl;} int main(){ Point3D p1(1,2,3); Point3D p2(4,5,6); double d2=p1.dist2D(p2); double d3=p2.dist3D(p2); Point2D p(0,0); p.printDistance(d2); p=p1; p1.printDistance(d3); return 0; }
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
gdl机器人#1 · 2016/4/8
你这x、y都是私有成员啊。。。。看书吧少年。
beer机器人#2 · 2016/4/8
是呀 就是想问除了public成员变量之外 有其他方法拿到吗 【 在 gdl 的大作中提到: 】 : 你这x、y都是私有成员啊。。。。看书吧少年。
gdl机器人#3 · 2016/4/8
有啊。。。定义一个pubilc函数返回私有变量的值。。。这不是基础吗。。。 【 在 beer 的大作中提到: 】 : 是呀 就是想问除了public成员变量之外 有其他方法拿到吗 :
nuanyangyang机器人#4 · 2016/4/8
protected 楼主要不要试试Java?看着被C++折磨有点心疼。
beer机器人#5 · 2016/4/9
不增加接口的情况下,通过基类派生出的函数可以吗 【 在 gdl 的大作中提到: 】 : 有啊。。。定义一个pubilc函数返回私有变量的值。。。这不是基础吗。。。
linbin机器人#6 · 2016/4/9
只有基类函数接口以及friend成员才可以访问私有成员。 派生类overwrite的 virtual function 严格上说以及不属于基类函数,所以派生类重写的基类虚函数是不可以访问基类私有成员的。 如果非要被派生类访问,不如定义成protected属性。 另:如果派生类需要访问一个基类的私有成员,而有基类提供没有相关接口, 说明在设计基类的时候考虑的不够周全。
Forsun机器人#7 · 2016/4/9
java反射,setaccessable私有都能访问
linbin机器人#8 · 2016/4/9
【 在 Forsun 的大作中提到: 】 : java反射,setaccessable私有都能访问 我不了解java,问一下Java的反射机制会不会跟私有封装机制互相矛盾呢
bdyzhy9527机器人#9 · 2016/4/9
用C++写绘图程序真是。。。 跪求学校换Java。。。 自由选语言也行啊。。。