Joã*_*nso 9 c++ operator-overloading language-lawyer
同一运算符的一元和二元形式被认为具有相同的名称.[注意:因此,一元运算符可以隐藏二进制运算符与封闭范围,反之亦然. - 尾注]
我想看一个隐藏发生的片段的编译示例.
Sto*_*ica 11
一个相当简单的例子1:
struct foo {
void operator+(foo const&) {}
};
struct bar : foo {
void operator+() {}
};
int main() {
bar a, b;
a + b; // Can't add two bars
}
Run Code Online (Sandbox Code Playgroud)
成员函数的名称是operator+,所以声明的bar那个在foo我们重载它时会隐藏它.这使得在main形成不良的情况下加入.
但是如果你有两个foo对象(不是bar),那么添加就完全可以了.
1 - 请原谅我这是一个非编译的,但通常隐藏名称的问题是它会阻止程序突然建立.
| 归档时间: |
|
| 查看次数: |
121 次 |
| 最近记录: |