valores una todas tipos retornan que programacion parametros lenguaje las funciones funcion estructura ejemplos con c++ optional-arguments

c++ - una - tipos de funciones en c



¿Cómo pasar argumentos opcionales a un método en C++? (6)

Aquí hay un ejemplo de pasar el modo como parámetro opcional

void myfunc(int blah, int mode = 0) { if (mode == 0) do_something(); else do_something_else(); }

puede llamar a myfunc en ambos sentidos y ambos son válidos

myfunc(10); // Mode will be set to default 0 myfunc(10, 1); // Mode will be set to 1

¿Cómo pasar argumentos opcionales a un método en C ++? Cualquier fragmento de código ...


Con comas que los separan, al igual que los parámetros sin valores predeterminados.

int func( int x = 0, int y = 0 ); func(); // doesn''t pass optional parameters, defaults are used, x = 0 and y = 0 func(1, 2); // provides optional parameters, x = 1 and y = 2


Normalmente, al establecer un valor predeterminado para un parámetro:

int func(int a, int b = -1) { std::cout << "a = " << a; if (b != -1) std::cout << ", b = " << b; std::cout << "/n"; } int main() { func(1, 2); // prints "a=1, b=2/n" func(3); // prints "a=3/n" return 0; }


Puede ser interesante para algunos de ustedes que en el caso de múltiples parámetros predeterminados:

void printValues(int x=10, int y=20, int z=30) { std::cout << "Values: " << x << " " << y << " " << z << ''/n''; }

Dadas las siguientes llamadas a funciones:

printValues(1, 2, 3); printValues(1, 2); printValues(1); printValues();

Se produce el siguiente resultado:

Values: 1 2 3 Values: 1 2 30 Values: 1 20 30 Values: 10 20 30

Referencia: http://www.learncpp.com/cpp-tutorial/77-default-parameters/


Una regla importante con respecto al uso de parámetros predeterminado:
Los parámetros predeterminados se deben especificar en el extremo derecho, una vez que se especifica un parámetro de valor predeterminado no se puede volver a especificar el parámetro no predeterminado. ex:

int DoSomething(int x, int y = 10, int z) -----------> Not Allowed int DoSomething(int x, int z, int y = 10) -----------> Allowed


Use los parámetros predeterminados

template <typename T> void func(T a, T b = T()) { std::cout << a << b; } int main() { func(1,4); // a = 1, b = 4 func(1); // a = 1, b = 0 std::string x = "Hello"; std::string y = "World"; func(x,y); // a = "Hello", b ="World" func(x); // a = "Hello", b = "" }

Nota: Los siguientes están mal formados

template <typename T> void func(T a = T(), T b ) template <typename T> void func(T a, T b = a )