【发布时间】:2014-10-21 14:11:13
【问题描述】:
维基百科关于Properties 的文章介绍了一个模板类,可以用来创建属性成员(稍作编辑):
template <typename T> class property {
T value;
public:
T & operator = (const T &i) {
return value = i;
}
operator T const & () const {
return value;
}
};
struct Bar {
// Using the property<>-template.
property <bool> alpha;
property <unsigned int> bravo;
};
int main () {
Bar bar;
bar.alpha = true;
return bar.bravo;
}
我要弄清楚的是 C++ 功能的名称,它允许 bar.bravo 存在且没有尾随 ()。
代码compiles 很好...我只是不知道为什么!
谷歌搜索将我指向“函子”,但那些重载的括号运算符似乎都有参数(我可以理解它们是如何工作的)。
【问题讨论】:
-
您将运算符的符号与普通函数声明的词法结构混淆了。 “括号运算符”是
operator()()。这就是我们现在所拥有的。
标签: c++ operator-overloading functor