关于LINK2001和虚函数的问题!!急!!!

来源:百度知道 编辑:UC知道 时间:2024/05/14 20:04:20
--------------------Configuration: Student 加强版 - Win32 Debug--------------------
Linking...
ElectiveCourse.obj : error LNK2001: unresolved external symbol "public: virtual int __thiscall Course::getScore(void)const " (?getScore@Course@@UBEHXZ)
ObligatoryCourse.obj : error LNK2001: unresolved external symbol "public: virtual int __thiscall Course::getScore(void)const " (?getScore@Course@@UBEHXZ)
Debug/Student 加强版.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.
本人学编u程不久,还望大侠们多多帮助啊!
这是个有关虚函数的问题。当我在基类中以 virtual type function()const=0;声明纯虚函数的时候,连接错误十几个,但是改为virtual type function(){};后就只有以上的三个了。这是为什么?

纯虚函数:没有函数体。函数名后“=0”例:virtual void breathe()=0;此时包含它的类叫抽象类,抽象类是不能实例化对象的。而引用这个纯虚函数也成了抽象类,也不能实例化对象了。这时要重新定义这个虚函数。即在子类中定义同名但不带virtual的函数。
纯虚函数:被标明为不具体实现的虚成员函数。它可以让类先具有名称,而没有具体的操作内容,让派生类在定义时再给出具体的定义。它是为派生类服务的,不能具体实例化对象。
纯虚函数的产生原因:在程序设计基类时,不太好确定具体的行为具体要表现为什么样的形式,而这种行为又是必须的。
-------------
如果你想给虚函数中的常量初使化你应该用
,常量(0)而不是const=0;
如果子类实例化对象,则先调用父类的构造函数,再调用子类的构造函数
而析构函数则先调用子类后调用父类.
如果父类的构造函数带有参数,子类的不带参数,编译时就会出现不匹配错误.解决方法:将子类的构造函数后加‘:父类构造函数’。即函数也能用继承符“:”来继承。例:Flish():Animal(400,300)注意,这时参数要实例化。这种方法也可以用来做常量的初始化:例:Flish():Animal(400,300),a(1)
常量a与变量a 的区别:常量是不可变的,只能赋一次初值。在内存中,但不独占内存,因此无法寻址。