Questions tagged «operator-overloading»

运算符重载是一种编程语言的功能,它允许根据所涉及的操作数的类型为运算符自定义实现。某些语言允许定义新的运算符,而其他语言仅允许重新定义现有运算符。

11
重载JavaScript中的算术运算符?
给定这个JavaScript“类”定义,这是我想到这个问题的最佳方式: var Quota = function(hours, minutes, seconds){ if (arguments.length === 3) { this.hours = hours; this.minutes = minutes; this.seconds = seconds; this.totalMilliseconds = Math.floor((hours * 3600000)) + Math.floor((minutes * 60000)) + Math.floor((seconds * 1000)); } else if (arguments.length === 1) { this.totalMilliseconds = hours; this.hours = Math.floor(this.totalMilliseconds / 3600000); this.minutes …

6
为什么拷贝分配运算符必须返回引用/常量引用?
在C ++中,从复制赋值运算符返回引用的概念对我来说还不清楚。为什么复制分配运算符不能返回新对象的副本?另外,如果我有classA和以下内容: A a1(param); A a2 = a1; A a3; a3 = a2; //<--- this is the problematic line 的operator=定义如下: A A::operator=(const A& a) { if (this == &a) { return *this; } param = a.param; return *this; }



8
带重载算子的De Morgan定律优化
每个程序员都应该知道: (德摩根定律) 在某些情况下,为了优化程序,编译器可能会修改(!p && !q)为(!(p || q))。 这两个表达式是等效的,并且对第一个或第二个表达式的求值没有区别。 但是在C ++中,可能会重载运算符,而重载的运算符可能并不总是尊重此属性。因此,以这种方式转换代码实际上将修改代码。 当和重载时!,编译器是否应使用De Morgan定律?||&&

3
unique_ptr <0或小于运算符的作用是什么?
我正在处理不是由我编写的代码。我有这句话: // p is type of std::unique_ptr&lt;uint8_t[]&gt; if (p &lt; 0) { /* throw an exception */ } 那么p &lt; 0在这种情况下意味着什么呢? 在文档页面,我相信我的情况是16) y &lt; nullptr,这里0是nullptr。 但是它是做什么的呢?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.