C++模板编程:类模板、模板特化与运算符重载
1. 类模板的简单I/O测试
首先,我们来看一个简单的 rational 类模板的I/O测试程序:
import <iostream>;
import rational;
int main()
{
rational<int> r{};
while (std::cin >> r)
std::cout << r << '\n';
}
若要修改该测试程序,使其仅打印非零值,程序应如下所示:
import <iostream>;
import rational;
int main()
{
static const rational<int> zero{};
rational<int> r{};
while (std::cin >> r)
if (r != zero)
std::cout << r << '\n';
}
然而,这里会出现问题。编译器不会对函数模板执行自动类型转换,这意味着它不会将 int 转换为 rational<int> 。为解决此问题,需添加一些额外的比较运算符,例如:
template&
超级会员免费看
订阅专栏 解锁全文
1382

被折叠的 条评论
为什么被折叠?



