#include <iostream>
class Multiplier
{
const int mFactor1;
const int mFactor2;
static void initializationLogic (int & a, int & b, const int c )
{
a = c * 5;
b = a * 2;
}
public:
Multiplier (const int & value1, const int & value2)
: mFactor1(value1), mFactor2(value2)
{};
/*
//this constructor doesn't initialize the const members
Multiplier (const int & value)
{
initializationLogic(mFactor1,mFactor2, value);
};
*/
static Multiplier getMultiplierInstance (const int & value)
{
int f1, f2;
initializationLogic(f1,f2, value);
Multiplier obj(f1,f2);
return obj;
}
int multiply1(int value) const
{
return mFactor1 * value;
}
};
int main()
{
Multiplier myObj(2,3);
std::cout << myObj.multiply1(3);
Multiplier anotherObj = Multiplier::getMultiplierInstance(1);
std::cout << anotherObj.multiply1(3);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKCmNsYXNzIE11bHRpcGxpZXIKewogICBjb25zdCBpbnQgbUZhY3RvcjE7CiAgIGNvbnN0IGludCBtRmFjdG9yMjsKICAgc3RhdGljIHZvaWQgaW5pdGlhbGl6YXRpb25Mb2dpYyAoaW50ICYgYSwgaW50ICYgYiwgY29uc3QgaW50IGMgKQogICB7CiAgICAgICBhID0gYyAqIDU7CiAgICAgICBiID0gYSAqIDI7CiAgICB9CiAgcHVibGljOgogICBNdWx0aXBsaWVyIChjb25zdCBpbnQgJiB2YWx1ZTEsIGNvbnN0IGludCAmIHZhbHVlMikKICAgICA6IG1GYWN0b3IxKHZhbHVlMSksIG1GYWN0b3IyKHZhbHVlMikKICAgICB7fTsKICAgLyoKICAgLy90aGlzIGNvbnN0cnVjdG9yIGRvZXNuJ3QgaW5pdGlhbGl6ZSB0aGUgY29uc3QgbWVtYmVycwogICBNdWx0aXBsaWVyIChjb25zdCBpbnQgJiB2YWx1ZSkKICAgICB7CiAgICAgICAgaW5pdGlhbGl6YXRpb25Mb2dpYyhtRmFjdG9yMSxtRmFjdG9yMiwgdmFsdWUpOwogICAgIH07CiAgICAqLwogICBzdGF0aWMgTXVsdGlwbGllciBnZXRNdWx0aXBsaWVySW5zdGFuY2UgKGNvbnN0IGludCAmIHZhbHVlKQogICB7CiAgICAgICBpbnQgZjEsIGYyOwogICAgICAgaW5pdGlhbGl6YXRpb25Mb2dpYyhmMSxmMiwgdmFsdWUpOwogICAgICAgTXVsdGlwbGllciBvYmooZjEsZjIpOwogICAgICAgcmV0dXJuIG9iajsKICAgfQogICAgIAogIGludCBtdWx0aXBseTEoaW50IHZhbHVlKSBjb25zdAogIHsKICAgICByZXR1cm4gbUZhY3RvcjEgKiB2YWx1ZTsKICB9CiAgCiAgICAgCn07CgppbnQgbWFpbigpIAp7CiAgIE11bHRpcGxpZXIgbXlPYmooMiwzKTsKICAgc3RkOjpjb3V0IDw8IG15T2JqLm11bHRpcGx5MSgzKTsKICAgTXVsdGlwbGllciBhbm90aGVyT2JqID0gTXVsdGlwbGllcjo6Z2V0TXVsdGlwbGllckluc3RhbmNlKDEpOwogICBzdGQ6OmNvdXQgPDwgYW5vdGhlck9iai5tdWx0aXBseTEoMyk7CiAgIHJldHVybiAwOwp9