父類放在了worker.h中
class worker
{
public:
virtual void showworker()=0;
virtual string getzhize()=0;
string m_name;
int worker_bianhao;
int zhize_num;
};
子類放在了boss.h中
class boss :public worker
{
public:
boss(int workerbianhao, string name, int zhizenum)
{
this->worker_bianhao = workerbianhao;
this->m_name = name;
this->zhize_num = zhizenum;
}
void showworker();
string getzhize();
string m_name;
int worker_bianhao;
int zhize_num;
};
主源檔案中的部分代碼:
worker* p =NULL;
switch (b)
{
case 1:
{
p = new boss(a, name, b);
cout << p->zhize_num << endl;//這里輸出的卻是垃圾值
break;
}
uj5u.com熱心網友回復:
p訪問的是父類的zhize_num,你的work沒有初始化zhize_num當然是為止值了。正確的做法是boss 建構式中呼叫父類的建構式初始化其成員。
uj5u.com熱心網友回復:
你有兩個zhize_num,去掉子類的uj5u.com熱心網友回復:
謝謝,一語點醒夢中人
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/198878.html
標籤:C++ 語言
上一篇:急求 這段代碼哪里錯了?
下一篇:C++語言
