C++ C++;运算符重载将指针类型作为参数? 代码>重载,用于标量乘法。@ TerryLiYifeng:考虑一下你在一个类中看到二进制运算符的重载,它使用一个基元类型参数。你可以这样做,因为重载函数是自定义类的成员函数,而内置参数只是这个成员函数的一个函数参数。因此,仅对自定义类型重载的规则在这里适用。@Viruzzo-严格来说,基本类型的变量也是对象,但在其他方面你是正确的。我看了一下你问题中的链接——糟糕透了(您已经可以从他们的示例甚至没有编译的事实中看出)。引用的最常见用法是:1复制对象时将常量引用用作函数参数效率低下(并且可能由于缺少复制构造函数而禁用);2许多非常量成员函数(包括运算符)的返回类型;3当需要修改对象时,作为函数参数的非常量引用(这种用法值得商榷,因为指针也很流行);4作为永远不能更改的数据成员(而不是指针)。

C++ C++;运算符重载将指针类型作为参数? 代码>重载,用于标量乘法。@ TerryLiYifeng:考虑一下你在一个类中看到二进制运算符的重载,它使用一个基元类型参数。你可以这样做,因为重载函数是自定义类的成员函数,而内置参数只是这个成员函数的一个函数参数。因此,仅对自定义类型重载的规则在这里适用。@Viruzzo-严格来说,基本类型的变量也是对象,但在其他方面你是正确的。我看了一下你问题中的链接——糟糕透了(您已经可以从他们的示例甚至没有编译的事实中看出)。引用的最常见用法是:1复制对象时将常量引用用作函数参数效率低下(并且可能由于缺少复制构造函数而禁用);2许多非常量成员函数(包括运算符)的返回类型;3当需要修改对象时,作为函数参数的非常量引用(这种用法值得商榷,因为指针也很流行);4作为永远不能更改的数据成员(而不是指针)。,c++,pointers,types,reference,operator-overloading,C++,Pointers,Types,Reference,Operator Overloading,作者在文章中提到,day*operator++(day*d)不会编译(注意:day是枚举类型),并认为此重载运算符函数的参数必须是类型t、t&或t const&,其中t是类或枚举类型 我假设指针是一个内置类型,而不是类或枚举,因此它不能用于重载运算符,并且不可能对所有内置类型(如int和double)重载运算符 例如,inti=1++一,永远不会导致i为3 我说得对吗?请帮助我更好地理解这个问题。运算符重载的第一条规则是: 您不能为内置数据类型重载运算符,只能为自定义数据类型重载运算符,因此您在

作者在文章中提到,
day*operator++(day*d)
不会编译(注意:
day
是枚举类型),并认为此重载运算符函数的参数必须是类型t、t&或t const&,其中t是类或枚举类型

我假设指针是一个内置类型,而不是类或枚举,因此它不能用于重载运算符,并且不可能对所有内置类型(如int和double)重载运算符

例如,
inti=1++一,int
++
运算符,code>永远不会导致
i
为3


我说得对吗?请帮助我更好地理解这个问题。

运算符重载的第一条规则是:

您不能为内置数据类型重载运算符,只能为自定义数据类型重载运算符,因此您在这方面是正确的。

是的,指针是基本类型而不是对象。它们只是数字(它们指向的对象的内存地址),因此可以对它们应用算术


是的,您不能重载基元类型的运算符(但是您可以重载采用基元类型参数的类中的二进制运算符)。

您可以分享一个示例,其中您希望重载采用基元类型参数的类中的二进制运算符吗?@terrylifeng,一个例子是
复杂的
运算符+
,它接受一个
参数。是的,
字符串
与原语值串联(仍然是
运算符+
)也是必要的。我曾经创建过一个矩阵类,它有一个<代码>操作符*>代码>重载,用于标量乘法。@ TerryLiYifeng:考虑一下你在一个类中看到二进制运算符的重载,它使用一个基元类型参数。你可以这样做,因为重载函数是自定义类的成员函数,而内置参数只是这个成员函数的一个函数参数。因此,仅对自定义类型重载的规则在这里适用。@Viruzzo-严格来说,基本类型的变量也是对象,但在其他方面你是正确的。我看了一下你问题中的链接——糟糕透了(您已经可以从他们的示例甚至没有编译的事实中看出)。引用的最常见用法是:1复制对象时将常量引用用作函数参数效率低下(并且可能由于缺少复制构造函数而禁用);2许多非常量成员函数(包括运算符)的返回类型;3当需要修改对象时,作为函数参数的非常量引用(这种用法值得商榷,因为指针也很流行);4作为永远不能更改的数据成员(而不是指针)。