和运算符用于引用和返回变量的地址。我想做的就是将运算符语法更改为_或| (你明白了)。我该怎么办?
默认值:
int *p;
int a;
p = &a;
我想做什么:
int *p;
int a;
p = _a; // or |a
答案 0 :(得分:6)
您不能更改为_
,因为它不是运算符,因此不能重载。
您不能更改为|
,因为该运算符的 airity 是二进制的,而指针取消引用*
是一元的。
即使您确实选择了具有正确空缺性的运算符进行重载,也请注意,您不能重载内置类型,例如int
。
最后,如果您想了解运算符重载的最强大功能,请看一下以下项目:http://boost-spirit.com/home/,其中表达式模板与运算符重载一起用于模拟EBNF语法。
答案 1 :(得分:3)
&当应用于两个运算符时为'and',但一元应用于时为'take address'。您不可能混淆它们。
如果您只是好奇,可以这样做
this.props.tasks.map((i) => {return (<Task key={i} _onChange={this._onChange}/>);
您必须在此处放置一个空格。相信我,没有人希望您重新定义标准运算符。
答案 2 :(得分:1)
Bathsheba已经回答,您无法轻松替换那些运算符。
但是,如果您真的不能忍受使用&
作为地址运算符,则可以使用std::addressof
函数。它仍然会很奇怪而且很独特,但是至少在语法上有意义。