为什么以下工作?
template<typename T> class example {
public:
T val;
example() {val=0;}
example operator+(example ob) {
example temp;
temp.val = val+ob.val;
return temp;
}
};
int main() {
example<int> a;
a+a;
return 0;
}
如果我没有看到它编译我会说运算符重载应该如下:
example<T> operator+(example<T> ob {
example<T> temp;
temp.val = val+ob.val;
return temp;
}
另外,我尝试在 main 中更改以下内容:
example<int> a;
到:
example a;
但得到一个错误说“......缺少模板参数......”我的猜测是在类定义中,编译器将示例视为示例。但由于这只是一个猜测,我无法在任何地方确认,我想我会在这里问。