C++ 继承子类的初始化列表顺序求解答。

classperson{private:stringfirstname;stringlastname;protected:virtualvoiddata()const;v... class person{
private:
string firstname;
string lastname;
protected:
virtual void data()const;
virtual void get();
public:
person():firstname("no one"),lastname("no one"){};
person(const string& f,const string& l):firstname(f),lastname(l){};
person(const person& p):firstname(p.firstname),lastname(p.lastname){};
virtual ~person()=0;
virtual void se_t()=0;
virtual void show()const=0;
}
上代码是基类。
class gunslinger:virtual public person{
private:
int numsk; //出现bug,wreorder numsk被初始化在之后
protected:
void data()const;
void get();
public:
gunslinger():numsk(0),person(){};
gunslinger(int nk,const string& f,const string& l):numsk(nk),person(f,l){};
gunslinger(int nk,const person& p):numsk(nk),person(p){};
void show()const;
void se_t();
double draw()const;
};
子类是虚继承,我这个在numsk处的bug原因是什么,求分析,答得好有追加。
展开
 我来答
若以下回答无法解决问题,邀请你更新回答
cc209113850
2017-09-12 · 超过51用户采纳过TA的回答
知道小有建树答主
回答量:94
采纳率:72%
帮助的人:20.5万
展开全部
虚继承的意义在于还要和其他派生这个基类的派生类共同派生出一个新类,这个新类里面不会出现两个基类,而是共同使用这个基类..你这个代码的派生关系不知道是什么意义.
你可以去掉virtual试试:
class gunslinger:public person{
更多追问追答
追问
我这个是 person 派生的gunslinger 和pokeplayer
然后这两个子类再来派生一个 叫baddude的类。
对于虚继承,在gun和poke子类的列表初始化,是不要初始化基类吗?等到最后baddude再初始基类吗?
追答
最后再去初始化或者赋值,中间的派生类没必要,代码不容易读
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式