C *运算符是否已经超载?

我的C老师认为标准C中的*运算符“已经重载”,因为它可以意味着依赖于上下文的间接或乘法.他从C Primer Plus获得了这一点,其中指出:

Actually,many C++ (and C) operators already are overloaded. For example,the * operator,when applied to an address,yields the value stored at that address. But applying * to two numbers yields the product of the values. C++ uses the number and type of operands to decide which action to take. (pg 502,5th ed)

至少另外一本教科书说得很一样.据我所知,这是不正确的;一元*是与二进制*不同的运算符,编译器消除它们的机制与运算符重载无关.

谁是对的

解决方法

两者都是正确的,因为问题取决于上下文和重载一词的含义.

“重载”可以具有“同一符号,不同含义”的常用含义,并允许使用包括间接和乘法的“*”以及任何用户定义的行为.

“重载”可以用于C的官方运算符重载功能,在这种情况下,间接和乘法确实是不同的.

附录:请参阅下面史蒂夫的评论,关于“令牌超载”的“令牌重载”.

相关文章

/** C+⬑ * 默认成员函数 原来C++类中,有6个默认成员函数: 构造函数 析构函数 拷贝...
#pragma once // 1. 设计一个不能被拷贝的类/* 解析:拷贝只会放生在两个场景中:拷贝构造函数以及赋值运...
C类型转换 C语言:显式和隐式类型转换 隐式类型转化:编译器在编译阶段自动进行,能转就转,不能转就编译...
//异常的概念/*抛出异常后必须要捕获,否则终止程序(到最外层后会交给main管理,main的行为就是终止) try...
#pragma once /*Smart pointer 智能指针;灵巧指针 智能指针三大件//1.RAII//2.像指针一样使用//3.拷贝问...
目录<future>future模板类成员函数:promise类promise的使用例程:packaged_task模板类例程...