使用一个函数调用C ++初始化多个常量类成员
如果我有两个不同的常量成员变量,都需要基于相同的函数调用进行初始化,是否有一种方法可以在不两次调用函数的情况下进行? 例如,分数类,其中分子和分母是常数。 int gcd(int a, int b); // Greatest Common Divisor class Fraction { public: // Lets say we want to initialize to a reduced fraction Fraction(int a, int b) : numerator(a/gcd(a,b)), denominator(b/gcd(a,b)) { } private: const int numerator, denominator; }; 由于两次调用GCD函数,这会浪费时间。您还可以定义一个新的类成员,gcd_a_b然后首先将gcd的输出分配给初始化程序列表中的输出,但这将导致内存浪费。 通常,有没有一种方法可以避免浪费的函数调用或内存?您能否在初始化列表中创建临时变量?谢谢。