[问题] c++ class 可否多载 class name?

楼主: OfficeGL (努力上班族)   2019-07-24 17:15:31
开发平台(Platform): (Ex: Win10, Linux, ...)
linux
编译器(Ex: GCC, clang, VC++...)+目标环境(跟开发平台不同的话需列出)
clang++ -std=c++11
问题(Question):
我目前能多载 operator[] / > / < / + / ...
但我想要多载 class 变量名称
ex.
class Ball {
public:
.......
bool 多载func () {
return (a > b);
}
private:
... ...
int a, b;
}
int main(){
Ball a;
// 我想要多载 a,直接 return boolean value
if( a ) {
}
....
}
目前不知道如何实作
有大大可以分享教学吗~~
谢谢~
作者: sarafciel (Cattuz)   2019-07-25 13:51:00
你要的那个operator+不见得什么场合都会是整数的+呀XD最简单的例子就是std::string
作者: eye5002003 (下一夜)   2019-07-25 00:57:00
bibo说的就是你想要的
作者: LPH66 (-6.2598534e+18f)   2019-07-24 19:54:00
if(a) 这种式子会把 a 转型成 bool 再做判断所以你只要重载当它转型成 bool 时的行为即可要转成的值即是所有你要使 if(a) 成立的状况
作者: s4300026 (s4300026)   2019-07-24 18:18:00
作者: Lipraxde (Lipraxde)   2019-07-24 18:16:00
conversion operator
作者: s4300026 (s4300026)   2019-07-24 18:16:00
就是if(cin),对吧 XD
作者: jerryh001   2019-07-24 17:31:00
重载转型成bool的operator?慢了XD
作者: bibo9901 (function(){})()   2019-07-24 17:30:00
就 operator bool() 啊XD
作者: ko27tye (好滋好滋)   2019-07-24 17:24:00
比较符合你需求的做法是overload operator() 但使用起来会像这样--> if(a()){...}
作者: LPH66 (-6.2598534e+18f)   2019-07-25 17:35:00
简单讲就是当你的 operator + - * / 等等的运算结果会需要是某个非内建型态的东西的时候你不管用什么中间型态过渡都是没办法的数的运算的例子例如表示有理数的 class跟数无关的例如上面提的字串相连
作者: CoNsTaR ((const *))   2019-07-28 12:42:00
看 operator + 还是 operator int 的成本大吧

Links booklink

Contact Us: admin [ a t ] ucptt.com