A类继承了B类,在A构造函数时不能A(B m,B n)吗?

#include <stdafx.h>
#include <iostream.h>
#include <math.h>
class CPoint
{
public:
CPoint(double a,double b){x=a;y=b;}
double getx(){return x;}
double gety(){return y;}
void show()
{cout<<x<<","<<y<<endl;}
private:
double x,y;
};
class CLine:public CPoint
{
private:
CPoint p1,p2;
public:
CLine(CPoint a,CPoint b) //提示是这里出错
{
p1=a;
p2=b;
}
double length()
{
return sqrt(pow(p1.getx()-p2.getx(),2)+pow(p1.gety()-p2.gety(),2));
}
};
void main()
{
CPoint p1(0,0);
CPoint p2(5,0);
p1.show();
cout<<"to"<<endl;
p2.show();
CLine l1(p1,p2);
cout<<"length="<<l1.length()<<endl;
}

不是这个问题,是你的CPoint类的构造函数都要求有参数。
在CPoint中增加一个不需要参数的构造函数就OK了
温馨提示:内容为网友见解,仅供参考
无其他回答

A类继承了B类,在A构造函数时不能A(B m,B n)吗?
不是这个问题,是你的CPoint类的构造函数都要求有参数。在CPoint中增加一个不需要参数的构造函数就OK了

在C#中类A:类B是什么意思
也是就说了B是基类,A类是派生类(或叫使子类)。B类是A类的父类。在B类声明的属性,方法等,在A类中都得到继承。但A类中,也可以有自己的方法,属性等 也可以通俗的这样理解,A类是B类的一种特殊情况,A类是“等边三角形”B类是“三角形”。

C++类的继承的成员初始化问题:
派生类的构造函数只能初始化自己的成员,而不能初始化基类的成员。当然,有时派生类从基类继承了成员,它也可以初始化其从基类继承的成员。这时要用构造函数初始化列表中包含基类名及其从基类继承的成员:即上例中的A(n)。至于你所说的赋值情况,只是在派生类中访问基类的公有成员的特例,不属于成员...

C++的基类和派生类构造函数
基类与派生类的构造函数在C++中有所不同,基类的成员函数可以被继承,但构造函数不能。构造函数是为了初始化派生类的成员变量,但在基类中有private属性的成员变量在派生类中无法访问。因此,派生类的构造函数需要调用基类的构造函数来完成初始化工作。以下是一个示例,展示如何在派生类构造函数中调用基类构...

Java构造函数 为什么需要无参构造函数
时,此时编译器才会报错,因为找不到这个无参的构造函数。也就是说当一个类你没有给他构造函数,则编译器会自动补上一个无参的,若有的话就不会,你需要显示将此无参的构造函数写出来。另一个问题:无参的构造函数,只是为了比较好的构造类(new),具体情况要根据你的类是如何设计的,呵呵。

C++多继承(多重继承)详解
在这个例子中,D通过公有继承A类,私有继承B类,保护继承C类。D会根据继承的方式获取A、B、C中的成员,并确定它们在派生类中的访问权限。多继承的构造函数与单继承类似,只需在派生类构造函数中调用多个基类的构造函数。例如:D(形参列表): A(实参列表), B(实参列表), C(实参列表){ \/\/其他操作...

JAVA异常:java.lang.ClassCastException: [Ljava.lang.Object; canno...
);B b = (B)a;这样就运行期就会报这个异常了..但是假如你的B类继承自A类就不会了..如果你想避免这个错误的话..可以在转型前检查一下..a对象是否是B类型..用instanceof关键字..比如if(a instanceof B) 这样就行了..如果对您有帮助,请记得采纳为满意答案,谢谢!祝您生活愉快!vaela ...

例如我建立一个类A,构造函数a,那么在类外,A::a,和A a有什么区别??
1、构造函数必须和类名相同,所以你定义小写a不是构造函数。2、类外A::a 的意思是,A类的a,说明a是A类的一个成员函数或成员变量 3、A a,是用A定义了一个名字叫a的对象。

在java中,class A extends B B b=new A 这是多态还是隐式转换?
B b = new B();b就是子类对象的实例,不仅能够访问自己的属性和方法,也能够访问父类的属性和方法。诸如b.i,b.j,b.f(),b.g()都是合法的。此时b.f()是访问的B中的f()A a = new B();a虽然是用的B的构造函数,但经过upcast,成为父类对象的实例,不能访问子类的属性和方法。a.i,...

一个继承了以自己为模板入参的类,C++是如何构造的
return 0;}运行一次就知道构造顺序了。这是一种取巧的编程方法,用于多个类共享同一功能。他们说编译不了是对的。用下面的例子,不要在模板类中直接声明类的实例。template<typename T>class A{public:A() {}~A() {}public:T m_InstanceOfT;};class B:public A<B>{public:B() {}~B() {...

相似回答