感谢您的帮助,我总结了以下解决方案
如果我错了,请纠正我
Q值。至少解释三件可能出错的事情
template<typename A, typename B, typename C>
C mymin (const A& a, const B& b)
{
if ( a < b )
return (C) a;
else
return (C) b;
}
我的答案如下。
如果我把它们弄好的话,请告诉我。
&LT;运算符未定义,因此我们无法将这两个对象与&lt;操作
A和B的类型可以不同,并且&lt;没有为
如果C的类型与A或B不同 ,进行类型转换,改变定义为常数的a或b
无法保证从A或B到C的类型转换 ,因为没有定义转换构造函数。
未定义A和B的复制构造函数。 因此,我们只是返回浅层复制的。 因为它是浅拷贝 ,浅拷贝可以改变 ,并且原本应该是常量的副本也可以改变。
谢谢,
答案 0 :(得分:0)
&LT;运算符未定义,因此我们无法将这两个对象与&lt;运营商
定义运算符
A和B的类型可以不同,并且&lt;没有为该
它是无关的,因为即使两种类型相同,仍然可能没有运算符&lt;对他们来说。
如果C的类型与A或B不同,则会发生类型转换,更改定义为常量的a或b
即使C
相同,仍然会有常量丢失。
无法保证从A或B到C的类型转换,因为未定义转换构造函数。
类型转换本身是有保证的,但如果类型不同,则会产生不可预测的结果。
未定义A和B的复制构造函数。因此,我们只是返回浅层复制的。由于它是浅拷贝,因此可以改变浅拷贝,并且也可以改变应该是常数的原始拷贝。
A
或B
不需要复制构造函数。所涉及的唯一构造函数是C
的复制构造函数,它将接受已经C样式的转换C
作为参数。