为什么会连接错误

cjog
为什么会连接错误

代码如下:

#include <stdio.h>
class abstract
{
public:
        virtual pvf() =0 ;
};

class base
{
public:
        virtual put();
};



class derived   :   public abstract ,public base
{
public:
        pvf();
        put();
};

base :: put()
{

        printf("base/n" );
}

derived :: pvf()
{
        printf("overridded/n");
}

main()
{
        derived u;
        u.pvf();
        u.put();
}

在vc++上编译没问题,但连接时
Linking...
main.obj : error LNK2001: unresolved external symbol "public: virtual int __thiscall derived::put(void)" (?put@derived@@UAEHXZ)
Debug/main.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.

请问这是什么原因?

[[i] 本帖最后由 cjog 于 2008-2-17 14:03 编辑 [/i]]

levinee
[quote]原帖由 [i]cjog[/i] 于 2008-2-17 13:57 发表 [url=http://bbs.chinaunix.net/redirect.php?goto=findpost&pid=7969643&ptid=1053579][img]http://bbs.chinaunix.net/images/common/back.gif[/img][/url]
代码如下:

#include
class abstract
{
public:
        virtual pvf() =0 ;
};

class base
{
public:
        virtual put();
};



class derived   :   public abstract ,public base
... [/quote]

你在派生类中声明了put(),这样会覆盖了基类中的定义。但put()却没在派生类中定义,链接时当然出错。这就像只声明函数,没有定义就去调用。

[[i] 本帖最后由 levinee 于 2008-2-17 22:58 编辑 [/i]]

cjog
果然如此。多谢

bloblo
好贴啊 不错啊 谢谢楼主分享 拉 (*^__^*) 嘻嘻……              
   
     
      
   
   
  
     
   
      
------------------------------------------------------------------------------
昨天做[url=http://www.118cy.net/company/]主机空间[/url]客服时候给客人投诉我回答慢,居然扣了50元,想跳槽转行不做[url=http://www.118cy.net/host/]虚拟主机[/url]