用户定义的转换和用户定义的运算符之间有什么区别?

时间:2011-03-05 05:07:30

标签: c++

在运算符重载的上下文中,用户定义的转换和用户定义的运算符之间有什么区别?

3 个答案:

答案 0 :(得分:4)

用户定义的转换是:

  • 目标类型中的构造函数,可以使用源类型的单个参数调用(如果它们具有默认值,则可以存在更多参数)

  • 源类型的非静态成员函数,名称为operator DESTTYPE()

如您所见,第二个选项使用operator关键字,就像重载传统运算符时一样。

(注意:所有这些都在C ++标准的[class.conv]部分中正式描述。)

答案 1 :(得分:1)

C++中,没有可以重载的用户定义运算符的概念。仅限现有运营商,少数除外(。* :: ?:,< strong> sizeof ),可以重载。

答案 2 :(得分:0)

“用户定义的转换允许您使用构造函数或转换函数指定对象转换。除了标准转换之外,还隐式使用用户定义的转换来转换初始值设定项,函数参数,函数返回值,表达式操作数,表达式控制迭代,选择语句和显式类型转换。“

http://publib.boulder.ibm.com/infocenter/comphelp/v8v101/index.jsp?topic=/com.ibm.xlcpp8a.doc/language/ref/cplr383.htm

我不确定用户定义的运算符在C ++中是否可用(技术上),但运算符可能会过载。

http://www.cs.caltech.edu/courses/cs11/material/cpp/donnie/cpp-ops.html