我开始学习C ++课程,但我遇到了问题。我读到了构造函数和初始化列表,但我仍然无法解决我的问题。
foo.h中的代码:
class point{
public:
double x,y;
point(double x1, double y1);
};
class line: public point{
public:
double A,B,C;
double distance(point K);
line(point M, point N);
};
在foo.cpp中:
point::point(double x1, double y1){
x=x1;
y=y1;
}
line::line(point M, point N){
if(M.x!=N.x){
A=-(M.y-N.y)/(M.x-N.x);
B=1;
C=-(M.y-A*M.x);
}
else{
A=1;
B=0;
C=-M.x;
}
}
当然它不起作用,因为我不知道如何在行构造函数中调用点构造函数。我怎样才能做到这一点?我想这样做:
point A(5,3),B(3,4);
line Yab(A,B);
答案 0 :(得分:3)
为什么Class Line会从Point类继承? 解: 1 - 不要从Point继承 2 - 向Line类添加两个属性:Point _p1,_p2,然后从构造函数Line :: Line(Point A,Point B)初始化它{_p1 = A; _p2 = B;}
ps不会弄乱业务逻辑和访问模式
pps如果你想从派生类调用基础构造函数,即:
class Base {}
class Derived: public Base
{
Derived() : Base() {}
}
或
Derived::Derived() : Base()
{
}