我是个傻逼,连构造函数都不会

cmnlzdd 2011-04-12 03:45:54
我定义了一个叫shock的类,有两个构造函数,分别是
shock(){shares=0;shareval=0;Output();}
shock(int n=0,int pr=3):share(n){shareval=pr;Output();}

结果好像是报错,大家帮忙看看咋回事呗
...全文
83 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
zicheng_lin 2011-04-12
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 pengzhixi 的回复:]

额 你这当你构造这样一个对象的时候比如:
shock obj;那么你能知道调用哪个构造函数吗?如果你不知道那么编译器也不知道。
[/Quote]
+1
luciferisnotsatan 2011-04-12
  • 打赏
  • 举报
回复
shock(){shares=0;shareval=0;Output();}
shock(int n=0,int pr=3):share(n){shareval=pr;Output();}


shock *p = new shock();
这样调用时,编译器判断不出改用默认的还是两个都是默认值的。会有二义性

cmnlzdd 2011-04-12
  • 打赏
  • 举报
回复
哦,还是二楼的大侠给出了正确的答案啊!!谢谢您了啊!
yishuihanxiao 2011-04-12
  • 打赏
  • 举报
回复
定义了两个默认构造函数,所谓默认构造函数,就是没有参数或者所有参数都有默认值。

你这个定义:shock a; 编译器选择哪个构造函数呢?
ifengshow 2011-04-12
  • 打赏
  • 举报
回复
慢慢来
zicheng_lin 2011-04-12
  • 打赏
  • 举报
回复
你这样写,就是构造函数重定义了..
pengzhixi 2011-04-12
  • 打赏
  • 举报
回复
额 你这当你构造这样一个对象的时候比如:
shock obj;那么你能知道调用哪个构造函数吗?如果你不知道那么编译器也不知道。
cmnlzdd 2011-04-12
  • 打赏
  • 举报
回复
请问为什么和默认的是混淆的?不懂啊,希望不吝赐教啊
cmnlzdd 2011-04-12
  • 打赏
  • 举报
回复
class shock{
public:
shock(){shares=0;shareval=0;Output();}
shock(int n=0,int pr=3):share(n){shareval=pr;Output();}


}

老师说一看就是错的,叫我重新写,说什么两个函数混淆了。我不懂啊!!大家救我啊~
yuppy 2011-04-12
  • 打赏
  • 举报
回复
lz不要这样说自己..

shock(int n=0,int pr=3):share(n){shareval=pr;Output();}

是不是应该是shock(int n, in pr) ?
taodm 2011-04-12
  • 打赏
  • 举报
回复
知道什么叫“默认构造函数”么?
bdmh 2011-04-12
  • 打赏
  • 举报
回复
shock(int n=0,int pr=3),这个不能和默认的区分开,因为是有默认值,所以不写也是对的,这样编译器就没法区分了
zicheng_lin 2011-04-12
  • 打赏
  • 举报
回复
贴下全部代码,和错误知道什么地方,别说自己是s.b,谁都是从新手一步一步进步的!

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧