本文介绍了operator const char *()的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述 29岁程序员,3月因学历无情被辞! struct C { operator const char *(){return" ...." ;; } }; int main() { C a; 0 [a]; } 为什么那个0 [a]调用操作符const char *()? 解决方案 不确定,但这里是猜测。 以e1 [e2]为例。这与*(e1 + e2)完全相同。由于 加法是可交换的,这与*(e2 + e1)相同,这也是相当于e2 [e1]的。我想因为编译器不能下标一个 整数,它会反转下标,使其成为 a [0]; 并将''a''转换为const char *。 Jonathan struct C{operator const char*() { return "...."; }};int main(){C a;0[a];}Why does that 0[a] call operator const char*() ? 解决方案Not sure, but here''s a guess.Take for example e1[e2]. This is exactly like *(e1 + e2). Sinceaddition is commutative, this is the same as *(e2 + e1), which is againequivalent to e2[e1]. I suppose since the compiler cannot subscript aninteger, it reverses the subscript, making ita[0];and converts ''a'' to a const char*.Jonathan 这篇关于operator const char *()的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持! 上岸,阿里云!
08-05 22:53