| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 991 人关注过本帖
标题:参数可以这样传递?
只看楼主 加入收藏
xxcc309
Rank: 2
等 级:论坛游民
威 望:1
帖 子:63
专家分:82
注 册:2007-6-25
收藏
 问题点数:0 回复次数:13 
参数可以这样传递?
#include<iostream>
using namespace std;

class B
{
public:
    B()
    {
        cout<<"default constructor"<<endl;
    }
    ~B()
    {
        cout<<"destructed"<<endl;
    }
    B(int i):data(i)
    {
        cout<<"constructed by parameter" << data <<endl;
    }
private:
    int data;
};
B Play( B b)
{
    return b ;
}
int main(int argc, char* argv[])
{
    B temp = Play(5);
    return 0;
}
此程序中我对
B Play( B b)
{
    return b ;
}
int main(int argc, char* argv[])
{
    B temp = Play(5);
    return 0;
}
红色参数部分很疑惑,为什么直接可以传5进来?
搜索更多相关主题的帖子: 参数 
2009-10-08 07:58
xxcc309
Rank: 2
等 级:论坛游民
威 望:1
帖 子:63
专家分:82
注 册:2007-6-25
收藏
得分:0 
等待中。。。

努力决定一切 奋斗才是命运
2009-10-08 08:20
xxcc309
Rank: 2
等 级:论坛游民
威 望:1
帖 子:63
专家分:82
注 册:2007-6-25
收藏
得分:0 
如果可以的话,请解释下
B Play( B b)
{
    return b ;
}
这个函数,先谢过了。

努力决定一切 奋斗才是命运
2009-10-08 08:39
xxcc309
Rank: 2
等 级:论坛游民
威 望:1
帖 子:63
专家分:82
注 册:2007-6-25
收藏
得分:0 
没人解答。。版主大哥看来需要您出马了。。

努力决定一切 奋斗才是命运
2009-10-08 09:59
无诲今生
Rank: 8Rank: 8
来 自:桂林理工大学
等 级:蝙蝠侠
威 望:2
帖 子:373
专家分:726
注 册:2009-5-11
收藏
得分:0 
红色参数,实际上当运行时,已经把5隐式的转换成B的对象,整型转换成对象可以隐式的转换,但对象转换成其它类型要显式的转换。
B Play( B b)  
{  
    return b ;  
}   这个函数表示:返回类型是一个对象,参数也是一个对象

顺境逆境切莫止境,得意失意切莫在意。
2009-10-08 10:17
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
回复 4楼 xxcc309
呵呵,就是楼上说的。

程序调用了
    B(int i):data(i)
    {
        cout<<"constructed by parameter" << data <<endl;
    }
这个函数。

你琢磨一下程序的输出,应该可以想明白的~
2009-10-08 10:57
xxcc309
Rank: 2
等 级:论坛游民
威 望:1
帖 子:63
专家分:82
注 册:2007-6-25
收藏
得分:0 
程序的输出我可以理解,问题在
B Play( B b)   
{   
    return b ;   
}
这个函数,5是怎样被隐式转化的?能不能具体一点讲下,谢谢。

努力决定一切 奋斗才是命运
2009-10-08 14:38
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
回复 7楼 xxcc309
B(int i)
这个函数不是可以把一个 int 初始化成 B 这个类吗,然后再把它创建的对象传给 Play(B b) 做为参数。
2009-10-08 16:08
最左边那个
Rank: 4
等 级:业余侠客
威 望:3
帖 子:97
专家分:201
注 册:2009-4-24
收藏
得分:0 
具体我想应该是这样的吧,当读到Play(5)是,后台发现5是整型,而函数定义的是B类,那么后台就隐式调用了转换函数,将整型实参转换成形参指定的B类型!这一切都是隐式进行的,当然你也可以显式调用
2009-10-08 18:29
xxcc309
Rank: 2
等 级:论坛游民
威 望:1
帖 子:63
专家分:82
注 册:2007-6-25
收藏
得分:0 
谢谢大家的帮忙,这个问题我明白了。

努力决定一切 奋斗才是命运
2009-10-09 16:51
快速回复:参数可以这样传递?
数据加载中...
 
   



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

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