C++ 类模版继承非类模版的问题
#include<iostream>usingnamespacestd;classPoint{intx,y;public:Point(inta,intb){x=a;y=b...
#include <iostream>
using namespace std;
class Point{
int x,y;
public:
Point(int a, int b)
{
x = a;
y = b;
}
void display()
{
cout<<x<<","<<y<<endl;
}
};
template <class T>
class Line: public Point{
T x2, y2;
public:
Line(int a, int b, T c, T d):Point(a, b)
{
x2 = c;
y2 = d;
}
void dispaly()
{
Point::display();
cout<<x2<<","<<y2<<endl;
}
void show()
{
cout << x2<<","<<y2<<endl;
}
};
int main(void)
{
Point a(3, 8);
a.display();
Line <int> l(1, 2, 5, 9);
l.display();
Line <double> ac(1, 2, 9.5, 8.9);
ac.display();
ac.show();
return 0;
}
g++ 1.c -o 1之后
在ac.display()中,为什么不能显示x2,y2,只显示了Point中的x,y,为什么我又写了个show就能显示出来,怎么样才能达到我的目的,在display中,先显示x,y,然后显示x2,y2。
还有,为什么提问会有失效的情况? 展开
using namespace std;
class Point{
int x,y;
public:
Point(int a, int b)
{
x = a;
y = b;
}
void display()
{
cout<<x<<","<<y<<endl;
}
};
template <class T>
class Line: public Point{
T x2, y2;
public:
Line(int a, int b, T c, T d):Point(a, b)
{
x2 = c;
y2 = d;
}
void dispaly()
{
Point::display();
cout<<x2<<","<<y2<<endl;
}
void show()
{
cout << x2<<","<<y2<<endl;
}
};
int main(void)
{
Point a(3, 8);
a.display();
Line <int> l(1, 2, 5, 9);
l.display();
Line <double> ac(1, 2, 9.5, 8.9);
ac.display();
ac.show();
return 0;
}
g++ 1.c -o 1之后
在ac.display()中,为什么不能显示x2,y2,只显示了Point中的x,y,为什么我又写了个show就能显示出来,怎么样才能达到我的目的,在display中,先显示x,y,然后显示x2,y2。
还有,为什么提问会有失效的情况? 展开
展开全部
因为你在Line里面的函数是dispaly而不是display(),这应该是你输入错误导致的。
把Line里面的dispaly修改为display()就可以了。否则,只会调用继承的基类的display函数,即输出1,2,而不会输出5,9.
另外一点,最好将Point类中的display()函数声明为virtual类。这样还可以使用动态绑定功能。即将基类Point类型的指针或者引用绑定到Line对象上,亦可以调用Line类的display()函数。
把Line里面的dispaly修改为display()就可以了。否则,只会调用继承的基类的display函数,即输出1,2,而不会输出5,9.
另外一点,最好将Point类中的display()函数声明为virtual类。这样还可以使用动态绑定功能。即将基类Point类型的指针或者引用绑定到Line对象上,亦可以调用Line类的display()函数。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询