同志们...深更半夜了.进来帮个忙..有关用户自定义转换的问题..
class inter
{
public:
inter(int i):_value(i)
{
cout<<"inter(i)"<<endl;
}
inter(const inter &ri):_value(ri._value){cout<<"inter(const inter &)"<<endl;}
private:
int _value;
};
void clac(inter)
{
cout<<"clac(int) "<<endl;
}
int main()
{
int a;
clac(a); //
system("pause");
return 0;
}
在C++ PRIMER中写道:
clac(a)的C++伪码如下:
{
inter temp=inter(a); //那么这里temp的拷贝构造函数的调用怎么没有显示出来..
calc(temp); //这里也应该有一拷贝构造函数的调用也没有显示出来..??
}
-------------------
DEV-C++ 编译
[480 byte] By [
msdn] at [2007-11-17 11:06:00]

# 2 Re: 同志们...深更半夜了.进来帮个忙..有关用户自定义转换的问题..
不知楼主的版本是否过低,我用VC6和dev-c++都通过了,没问题.
正常显示出
inter(i)
# 4 Re: 同志们...深更半夜了.进来帮个忙..有关用户自定义转换的问题..
结果如下:
inter(i)
clac(int)
但是
clac(a)的C++伪码如下:
{
inter temp=inter(a); //那么这里temp的拷贝构造函数的调用怎么没有显示出来..
calc(temp); //这里也应该有一拷贝构造函数的调用也没有显示出来..??
}
两个拷贝构造函数的调用呢.怎么没有显示呢?
R9R9R9 at 2005-7-13 11:27:48 >

# 5 Re: 同志们...深更半夜了.进来帮个忙..有关用户自定义转换的问题..
to:andy_bin(乐逍遥)
lac(a)的C++伪码如下:
{
inter temp=inter(a); //这里inter(a)调用了一个构造函数..显示了inter(i);那然后inter temp用这个对像初始化.应该调用了一个拷贝构造函数..这个为什么没有显示出来
calc(temp); //这里的calc(inter)参数是传值调用.也应该有一个拷贝构造函数的调用.怎么也没有显示出来...哪里有不对的请指正...
}
R9R9R9 at 2005-7-13 12:07:07 >

# 6 Re: 同志们...深更半夜了.进来帮个忙..有关用户自定义转换的问题..
TO:foochow(恰似你的温柔)
书中写明clac(a)的C++伪码如下:
{
inter temp=inter(a); //那么这里temp的拷贝构造函数的调用怎么没有显示出来..
calc(temp); //这里也应该有一拷贝构造函数的调用也没有显示出来..??
}
这只是伪码啊..实际我们只是调用了
void clac(inter)
{
cout<<"clac(int) "<<endl;
}
这个函数..并没有调用了其他的东西..按理说.正常的显示应该像你上面写的那样吧..
R9R9R9 at 2005-7-13 16:46:59 >
