读书人

求教一道在链接时有有关问题的程序题

发布时间: 2012-02-09 18:22:27 作者: rapoo

求教一道在链接时有问题的程序题,谢谢!


/***********************************************************
定义一个计算基类,派生一个加法类,一个减法类
采用虚函数的方法实现多态。但是不知道为什么产生链接时错误。
大家帮我看看!谢谢!

***********************************************************/


#include <iostream>
#include <string>
using namespace std;

class Counter
{
public:
void Input(double x, double y)
{
_x = x;
_y = y;
}
virtual void Count();
protected:
double _x;
double _y;
};

class AddClass:public Counter
{
public:
virtualvoid Count()
{
double z = 0.0;
cout < <(z = _x + _y) < <endl;
}
};

class SubClass:public Counter
{
public:
virtualvoid Count()
{
double z = 0.0;
cout < <(z = _x - _y) < <endl;
}
};

int main(void)
{
double x,y;
char p;
cin> > x> > p> > y;
Counter *ptr;
if(p== '+ ') {
AddClass add;
ptr = &add;
add.Input(x,y);
ptr-> Count();
}
else if(p == '- ') {
SubClass sub;
ptr = ⊂
sub.Input(x,y);
ptr-> Count();
}
else
cout < < "error! ";
return 0;
}

[解决办法]
class Counter
{
public:
void Input(double x, double y)
{
_x = x;
_y = y;
}
virtual void Count(); <====这一行改为virtual void Count()=0;或者virtual void Count(){};
protected:
double _x;
double _y;
};

[解决办法]
纯虚函数必须要在派生类中定义它的类实现,你那个是虚函数,不是纯虚函数,虚函数主要消除派生类中的二义性问题.............
[解决办法]
有虚函数的类在编译生成的目标文件里都有虚函数表,这个表的每一项要么是0要么指向某个函数定义,如果有一项不是空,那么最后连接的时候,该项的值就会联到相应函数的相对地址上,如果函数没有定义,自然就无法解析这项了

读书人网 >C++

热点推荐