中易网

C++类的对重载函数的调用不明确 解释下下面的程序

答案:3  悬赏:0  
解决时间 2021-03-07 15:14
#include
using namespace std;
class demo
{
public:
demo(){x=0;cout<<"demo的默认构造函数!"< demo(int i){x=i;cout<<"demo的带一个参数的构造函数!"< ~demo(){cout<<"demo的默认析构函数!"< int get(){return x;}
void set(int i){x=i;}
private:
int x;
};
class rectangle
{
public:
rectangle(){x=1000;cout<<"rectangle的默认构造函数!"< rectangle(int i=0,int j=0,int k=0):x(i),width(j),length(k)
{
cout<<"rectangle的带三个参数的构造函数!"<<"长方形b的面积为:"< }
~rectangle(){cout<<"rectangle的默认析构函数!"< int area(){return length.get()*width.get();}
private:
demo length;
demo width;
int x;
};
int main()
{
// rectangle a(100,200,300);//这样是对的,我知道是调用带参数的构造函数
rectangle a;//这样不是应该是调用不带参数的构造函数么。为什么会出错呢。就是出现在这里,高人请指教。
return 0;
}
//错误原因 error C2668: “rectangle::rectangle”: 对重载函数的调用不明确

运行环境为visual studio 2008
最佳答案
简单一点,rectangle a; 这个定义产生了冲突,它既可以调用 rectangle(int i=0,int j=0,int k=0)进行构造也可调用rectangle()进行构造。这两个构造函数对rectangle a;并没有优先关系,因此系统不能识别该调哪个函数。
不建议楼主的rectangle(int i=0,int j=0,int k=0)这个构造函数,这样写没多大意义,一般来说如果要使用默认的参数,只提供部分的默认参数,而不是全部提供。
全部回答
rectangle(int i=0,int j=0,int k=0):x(i),width(j),length(k) 你这个函数每个参数都有默认值,就是说不提供参数也可以调用这个函数,所以在调用上与不带参数的默认构造函数冲突,故会产生此编译错误。
c++中sqrt参数一个是float,另一个是double。你调用的时候sqrt(num)中num是int型的,你将num换成double或float类型就行了.
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
想知道: 桂林市 从桂林市到阳朔县怎么坐船
如何理解公共部门在现代经济中的作用
我想问一下补过牙的人可以洗牙吗?
程咬金是什么级别的官
帮自己公司招聘,问一下在上啥班APP上面的简
6s更新了最新版本锁屏后触碰屏幕会亮是什么原
以丰和为中心写一名广告语
黄晚秋那里人
梨园春家私地址在哪,我要去那里办事
街道办事处的安监所是行政机关吗?
涿州宏远景园二期要交房了,请问要交什么费用
江油一中2014高考有没有出清华北大
求教燃烧法力和吸取法力的属性都有什么作用啊
我的眉毛还算浓密黑,就是眉毛是趴的,我的眼
仙境传说item_db.txt在哪找
推荐资讯
中国联通华盛小桃园营业厅地址在哪,我要去那
天秤座女能打动魔羯男吗?比例是多少?
数字代表的 如:38 三八 741 气死你 等等
鸿飞美术地址在什么地方,想过去办事
清远考完科目四多久可以拿驾照
120万元左右的一套别墅住宅和同样价格的奔驰
昆塔:盒子总动员的影片简介
十进制小数0.9转二进制
无锡北塘职校具体位置,是不是五年制大专学校
求个英语四级成绩单PSD模板
天天欢乐小火锅地址有知道的么?有点事想过去
新员工的自我介绍ppt 需要一个模版 101244314
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?