add 函数重载