为什么抽象基类的派生类无法创建对象

为何抽象基类的派生类无法创建对象
刚学了抽象类,在VS2010写写程序巩固一下,但是不明白为何无法创建抽象基类的派生类对象,不知道是哪里的问题。请高手指教一下。

#include "stdafx.h"
#include <iostream>
using namespace std;
class base
{
public:
virtual void display();
virtual char* Tname()const=0;
}
class typeA:public base
{
public:
typeA(int a=0,int b=0):x(a),y(b){};
void display(){cout<<"x+y="<<x+y;};
char* tname()const{return "this is typeA";}
protected:
int x;
int y;
}
class typeB:public typeA
{
public:
typeB(int a=0,int b=0,int c=0):typeA(a,b),z(c){};
void display(){cout<<"x+y+z="<<x+y+z;};
char* tname()const{return "this is typeB";}
protected:
int z;
}
class typeC:public typeB
{
public:
typeC(int a=0,int b=0,int c=0,int d=0):typeB(a,b,c),w(d){};
void display(){cout<<"x+y+z+w="<<x+y+z+w;};
char* tname()const{return "this is typeD";}
protected:
int w;
}
int _tmain(int argc, _TCHAR* argv[])
{
base *ptr;
typeA ta(1,2);//IntelliSense: 不允许使用抽象类类型 "typeA" 的对象:
typeB tb(3,4,5);//IntelliSense: 不允许使用抽象类类型 "typeB" 的对象:
return 0;
}
------解决方案--------------------
char* tname()const-->char* Tname()const