来自Python,我注意到C++中的东西往往有点复杂.一个很好的例子就是将数字提升到一个权力.在Python的数学库中,所需要的只是:
a = a**b
但是,在C++中我发现在线文档中的解释如.....
//float pow( float base, float exp ); //double pow( double base, double exp ); //long double pow( long double base, long double exp ); //float pow( float base, int iexp ); //double pow( double base, int iexp ); //long double pow( long double base, int iexp ); //promoted pow( Arithmetic1 base, Arithmetic2 exp );
显然,C++的创建者必须有很好的理由以这种方式实现,但作为一个新的程序员,这些原因使我望而却步.这是否为答案提供了更大的灵活性?在权力方面,我在C++中给出了哪些好处?
您找到的多个声明是C++具有静态类型与Python 动态类型的结果.在Python中,当你在一个值上调用一个函数时,它可以在运行时确定你是在整数,浮点数还是一些更复杂的对象上调用它并采取适当的操作.在C++中,您不能使用不同类型调用相同的函数,因此您必须为要支持的所有类型声明函数的不同版本.但是与C不同,您可以使用同名的函数,这些函数仅在参数签名方面有所不同(如Untitled123所指出的,这称为函数重载).这实际上使您的生活更轻松,因为您可以在pow(a,b)
不必担心调用哪种特殊函数来调用您想要的类型(例如pow_float_int(a,b)
或者pow_float_float(a,b)
),编译器将根据参数的类型为您调用正确的版本.