ani*_*ish 0 c++ operator-overloading
在c ++我有以下代码
class Foobar{
public:
Foobar * operator()(){
return new Foobar;
};
Run Code Online (Sandbox Code Playgroud)
我的问题是如何调用(); 如果我做Foobar foo()构造函数被调用我很困惑()的行为可以解释我
像这样:
Foobar f;
Foobar* p = f(); // f() invokes operator()
delete p;
Run Code Online (Sandbox Code Playgroud)
这也很奇怪,就像返回这样的指针而言,它是一个相当无用的函数.(我"需要" Foobar一个新的?)
虽然GMan的回答在事实上是正确的,但你不应该让操作员超负荷做出意想不到的事情 - 这违背了所有良好实践的编程规则.当用户阅读代码时,他希望运算符以某种方式运行,并使它们表现不同,这对于混淆编码竞争是有益的.
()C++中的运算符可用于使对象表示函数.这实际上有一个名称 - 它被称为仿函数,并在STL中广泛使用以提供通用算法.Google for stl functor可以了解该技术的良好用法.
| 归档时间: |
|
| 查看次数: |
278 次 |
| 最近记录: |