16 January 2023

C++ 核心指南目录

C.162: Overload operations that are roughly equivalent

理由

逻辑上相似的操作函数,使用不同的参数类型,却用了不同的名字,容易让人费解。我们就要在函数名上硬编码参数类型,从而就无法实现泛型编程了。

例子

考虑:

void print(int a);
void print(int a, int base);
void print(const string&);

这几个函数的作用都是打印出传给它的参数。

相反的:

void print_int(int a);
void print_based(int a, int base);
void print_string(const string&);

这几个函数也是打印出参数,但是在函数名上硬编码了参数类型,就无法支持泛型代码。