【发布时间】:2015-03-07 21:34:38
【问题描述】:
如果我的类上有运算符重载,是否也隐式创建了运算符的赋值版本?
class square{
square operator+(const square& B);
void operator=(const square& B);
};
我可以打电话吗
square A, B;
A += B;
编译器隐式决定先调用operator+,然后再调用operator=?
【问题讨论】:
-
运算符重载是使代码不可读的最佳方法之一。根据Google C++ Style Guide:“一般情况下,不要重载运算符。如果需要,可以定义像 Equals() 这样的普通函数。”
-
虽然好得多,但在创建用于表示数字的类以便能够以熟悉的格式读取代码时,这是一个问题; A = A.add(B).div(C).mul(D) 与 A = (A + B) / C * D
标签: c++ operator-overloading assignment-operator