C ++运算符重载将指针类型作为参数?

时间:2011-11-23 16:00:27

标签: c++ pointers types reference operator-overloading

我是C ++的新手并试图找出指针和引用之间的差异。我刚读过this short summary

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

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

例如,int i = 1; ++i;通过重载i类型的++运算符,永远不会导致int为3。

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

2 个答案:

答案 0 :(得分:5)

运算符重载的第一条规则是:
您不能为内置数据类型重载运算符,只能用于自定义数据类型,所以在这方面你是正确的。

答案 1 :(得分:4)

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

是的,你不能为基本类型重载运算符(但是你可以在采用基本类型参​​数的类中重载二元运算符)。