| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 708 人关注过本帖
标题:求助:今天在校内看到C++主页君发了一个关于构造函数的程序,我没搞明白,特 ...
只看楼主 加入收藏
天涯海角sxl
Rank: 2
等 级:论坛游民
帖 子:20
专家分:20
注 册:2012-2-20
结帖率:100%
收藏
 问题点数:0 回复次数:4 
求助:今天在校内看到C++主页君发了一个关于构造函数的程序,我没搞明白,特来求助!
程序代码:
#include <iostream>
using namespace std; 
  class Foo
  {
  public:
      Foo()   
      {   
           cout <<"1"<< endl;
      }   
      Foo(int a = 4)
      {   
          cout << a << endl;
      }
  }; 
  int main()
  {
      Foo a(3);   
      Foo b();
      return 0;
  }
结果输出是3

首先,结果输出为什么不是31?
根据函数重载:无参调用也可以调用默认参数函数,那又为什么没有调用默认参数函数?
搜索更多相关主题的帖子: 函数 
2012-03-23 19:07
xiaang123
Rank: 2
等 级:论坛游民
帖 子:7
专家分:20
注 册:2012-4-4
收藏
得分:0 
定义无参类对象的时候不能用 Foo b();
Foo b(); 表示声明一个函数 返回类型为FOO.

2012-04-10 20:37
xiaang123
Rank: 2
等 级:论坛游民
帖 子:7
专家分:20
注 册:2012-4-4
收藏
得分:0 
修改之后再出错是因为
Foo(int a = 4)参数全部为实参了,就属于默认构造函数;
因此不能再次声明无参数的默认构造函数Foo();否则会产生二义性的问题.
2012-04-10 20:52
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
收藏
得分:0 
别把自己绕进去,呵呵。

学习需要安静。。海盗要重新来过。。
2012-04-24 16:33
zhao_meng
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2012-7-18
收藏
得分:0 
1.默认构造函数都没有参数
2.带默认参数也是有参数的,Foo b()生命是错误的
2012-07-19 00:25
快速回复:求助:今天在校内看到C++主页君发了一个关于构造函数的程序,我没搞明 ...
数据加载中...
 
   



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

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