| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1355 人关注过本帖
标题:[求助]多重继承的构造问题
只看楼主 加入收藏
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 

我想应该是虚基类的原因吧,我想要是
class A{
int a;
public:
A(int x){a=x;}
.
};
class B:public A{
int b;
public:
B(int x,int y):A(x){b=y;}
.
};
class C:public B{
int c;
public:
C(int x,int y,int z):B(x,y){c=z;}
};
这里就可以


[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-05-19 10:42
freshman42
Rank: 1
等 级:新手上路
威 望:1
帖 子:94
专家分:0
注 册:2005-12-4
收藏
得分:0 
以下是引用wfpb在2006-5-19 10:42:00的发言:

我想应该是虚基类的原因吧,我想要是

是的
如果一个派生类有一个直接或间接的虚基类,那么派生类的构造函数的成员初始化列表中必须列出对虚基类构造函数的调用,如果未列出,则表示使该虚基类的默认构造函数来初始化派生类对象中的虚基类子对象.


2006-05-19 10:56
janlun86
Rank: 1
等 级:新手上路
帖 子:89
专家分:0
注 册:2006-5-9
收藏
得分:0 
以下是引用freshman42在2006-5-19 10:56:00的发言:

是的
如果一个派生类有一个直接或间接的虚基类,那么派生类的构造函数的成员初始化列表中必须列出对虚基类构造函数的调用,如果未列出,则表示使该虚基类的默认构造函数来初始化派生类对象中的虚基类子对象.

这句话值得品味.说到点子上了


天道酬勤,切忌浮躁
2006-05-19 11:12
janlun86
Rank: 1
等 级:新手上路
帖 子:89
专家分:0
注 册:2006-5-9
收藏
得分:0 
刚看了版规,决定改标题,以免犯规
这样对遇到同样问题的朋友也会有点帮助吧

[此贴子已经被作者于2006-5-19 11:23:34编辑过]


天道酬勤,切忌浮躁
2006-05-19 11:18
c120110
Rank: 1
等 级:新手上路
帖 子:39
专家分:0
注 册:2006-2-19
收藏
得分:0 
对头!怎么可能不要呢?不要的话!也是在派生类中调用了缺省的虚基类构造函数!
但是他的虚基类又没有定义缺省构造函数!肯定会出现问题了..

2006-05-19 12:04
heliujin
Rank: 2
等 级:论坛游民
帖 子:249
专家分:14
注 册:2006-3-14
收藏
得分:0 
如果一个派生类有一个直接或间接的虚基类,那么派生类的构造函数的成员初始化列表中必须列出对虚基类构造函数的调用,如果未列出,则表示使该虚基类的默认构造函数来初始化派生类对象中的虚基类子对象.
这说到点子上了啊 书上就是这么说的 除非虚基类有默认构造函数 可以省略对它的初始化
2006-05-19 13:02
janlun86
Rank: 1
等 级:新手上路
帖 子:89
专家分:0
注 册:2006-5-9
收藏
得分:0 
以下是引用heliujin在2006-5-19 13:02:00的发言:
如果一个派生类有一个直接或间接的虚基类,那么派生类的构造函数的成员初始化列表中必须列出对虚基类构造函数的调用,如果未列出,则表示使该虚基类的默认构造函数来初始化派生类对象中的虚基类子对象.
这说到点子上了啊 书上就是这么说的 除非虚基类有默认构造函数 可以省略对它的初始化

的确说到点子上了,我就引用这个回复作为本贴的总结吧,他把问题的根源给挖掘出来了


天道酬勤,切忌浮躁
2006-05-19 13:17
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 

恩,收下

[此贴子已经被作者于2006-5-19 21:35:26编辑过]


[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-05-19 21:35
yanglinayp
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2006-3-21
收藏
得分:0 

我运行后怎么有102个error

[此贴子已经被作者于2006-5-19 22:05:01编辑过]


我是小小登山者!
2006-05-19 22:04
yylcel
Rank: 1
等 级:新手上路
帖 子:39
专家分:0
注 册:2005-12-10
收藏
得分:0 

#include<iostream.h>
class vehicle
{
public:
int Maxspeed;
int Weight;
vehicle(int M,int W)
{
Maxspeed=M;
Weight=W;
}
void run(){cout<<"running"<<endl;};
void stop(){cout<<"stopping"<<endl;};
};
class bicycle:virtual public vehicle
{
public:
int Height;
bicycle(int M,int W,int H):vehicle(M,W)
{
Height=H;
}
};

class motorcar:virtual public vehicle
{
public:
int seatnum;
motorcar(int M,int W,int S):vehicle(M,W)
{
seatnum=S;
}
};
class Motorcycle:public bicycle,public motorcar
{
public:
Motorcycle(int M,int W,int H,int S):bicycle(M,W,H),motorcar(M,W,S),vehicle(M,W)
{
}
void show()
{
cout<<Maxspeed<<Weight<<Height<<seatnum;
}
};
void main()
{
}

2006-05-20 23:13
快速回复:[求助]多重继承的构造问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025649 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved