返回信息流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;
}
这是一条镜像帖。来源:北邮人论坛 / cpp / #90904同步于 2016/4/8
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
派生类怎么拿到基类成员函数的数据
beer
2016/4/8镜像同步10 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
有啊。。。定义一个pubilc函数返回私有变量的值。。。这不是基础吗。。。
【 在 beer 的大作中提到: 】
: 是呀 就是想问除了public成员变量之外 有其他方法拿到吗
:
不增加接口的情况下,通过基类派生出的函数可以吗
【 在 gdl 的大作中提到: 】
: 有啊。。。定义一个pubilc函数返回私有变量的值。。。这不是基础吗。。。
只有基类函数接口以及friend成员才可以访问私有成员。
派生类overwrite的 virtual function 严格上说以及不属于基类函数,所以派生类重写的基类虚函数是不可以访问基类私有成员的。
如果非要被派生类访问,不如定义成protected属性。
另:如果派生类需要访问一个基类的私有成员,而有基类提供没有相关接口, 说明在设计基类的时候考虑的不够周全。
【 在 Forsun 的大作中提到: 】
: java反射,setaccessable私有都能访问
我不了解java,问一下Java的反射机制会不会跟私有封装机制互相矛盾呢