shr*_*sva 4 c++ operator-overloading
我遇到这条线是stroustrup An operator function must either be a member or take at least one argument of a user-defined type (functions redefining the new and delete operators need not).
运算符new和operator delete是否将用户定义的类型作为其参数之一?这是什么意思,我在这里错过了一些东西
Stroustrup的引用显然适用于运算符重载.C++语言仅支持用户定义类型的运算符重载.这意味着重载函数(operator <something>)必须是用户定义类型的成员,或者是具有至少一个用户定义类型参数的独立函数.这正是相关报价的含义.
然而,独立(非成员)operator new和operator delete函数不需要将用户定义类型的值作为其参数之一.这可能被视为与您的引语相矛盾的内容.
然而,实际上并没有矛盾.这些运算符并没有真正超载.当你提供你自己的独立版本operator new/ operator delete,你实际上是取代了库提供的.这是语言规范中的官方术语:替换,而不是重载.这就是为什么以上引用并不真正适用于operator new和operator delete.
| 归档时间: |
|
| 查看次数: |
1043 次 |
| 最近记录: |