zz_自娛自樂
回答數:104 | 被采納數:118
#include<iostream.h>
#include<string.h>
#include<iomanip.h>
class a //定義a類
{public:
a(char*); //a的構造函數
virtual ~a(); //解析函數
const char *getname()const ;//返回name值
a *next; //用於構造鏈表
virtual void print(); //輸出
protected:
char *name;};
a::a(char *k) //定義構造函數
{name=new char[strlen(k)+1];
strcpy(name,k);}
a::~a() //定義解析函數
{delete[]name;}
const char*a::getname()const //getname的定義
{return name;}
void a::print() //輸出定義
{cout<<name<<endl;}
class b:public a //類b繼承類a
{public:
b(char*,char*); //b的構造函數
~b(){};
void setbnumber(char*);
virtual void print();
protected:
char *bnumber;
};
b::b(char*k,char*str):a(k)
{setbnumber(str);}
void b::setbnumber(char*str)
{bnumber=new char[strlen(str)+1];
strcpy(bnumber,str);
}
void b::print()
{a::print();
cout<<bnumber<<endl;
}
void addfront(a *&h,a *&t)
{t->next=h;h=t;}
void showb()
{a*emphead=NULL,*ptr;
ptr=new b(\"nihao\",\"yes\"); //為構造函數賦值
addfront(emphead,ptr); //加到鏈表中
ptr=new b(\"hello\",\"no\"); //再賦值
addfront(emphead,ptr); //再加到鏈表中
ptr=emphead;
while(ptr) //輸出基類a中的getname()
{ptr=ptr->next;
cout<<ptr->getname()<<endl;}
}
void main()
{showb();}
在vc6.0中檢驗不出錯誤,可就是執行到一半,輸出第一個\"nihao\",\"yes\"後就說什麼出現錯誤
調試後說錯誤出現在const char*a::getname()const{return name;}這裏,到底是怎麼回事,請高手指點一下。