我是C ++的新手并试图找出指针和引用之间的差异。我刚读过this short summary。
在文章中,作者提到day *operator++ (day *d);
将不会编译(注意:day
是一个枚举类型)并且认为这个重载的运算符函数的参数必须是类型T,T& ,或T const&,其中T是类或枚举类型。
我假设指针是内置类型而不是类或枚举,因此它不能用于重载运算符,并且对于所有内置类型(如int和double)都不能进行运算符重载。
例如,int i = 1; ++i;
通过重载i
类型的++
运算符,永远不会导致int
为3。
我说错了吗?请帮助我更好地理解这个问题。
答案 0 :(得分:5)
运算符重载的第一条规则是:
您不能为内置数据类型重载运算符,只能用于自定义数据类型,所以在这方面你是正确的。
答案 1 :(得分:4)
是的,指针是基本类型而不是对象。它们只是数字(它们指向的对象的内存地址),因此算术可以应用于它们。
是的,你不能为基本类型重载运算符(但是你可以在采用基本类型参数的类中重载二元运算符)。