Criando uma função square () sem x * x em C ++

Estou estudando C ++ e o livro "Princípios e práticas de programação usando C ++", de Bjarne Stroustrup. Um dos "Try This" pergunta o seguinte:

Implemente square () sem usar o operador de multiplicação; isto é, faça x * x por adição repetida (inicie um resultado variável em 0 e adicione x a ele x vezes). Em seguida, execute alguma versão do “primeiro programa” usando esse quadrado ().

Basicamente, preciso criar uma função quadrada (int x) que retornará o quadrado sem usar o operador de multiplicação. Até agora tenho isso:

int square(int x)
{
    int i = 0;
    for(int counter = 0; counter < x; ++counter)
    {
        i = i + x;
    }

return i;
}

Mas eu queria saber se havia uma maneira melhor de fazer isso. A função acima funciona, mas tenho certeza de que não é a melhor maneira de fazê-lo. Qualquer ajuda?

questionAnswers(6)

yourAnswerToTheQuestion