¿Cómo pasar argumentos opcionales a un método en C++? Cualquier fragmento de código ...¿Cómo pasar argumentos opcionales a un método en C++?
Respuesta
Aquí es un ejemplo de modo de pasar como parámetro opcional
void myfunc(int blah, int mode = 0)
{
if(mode == 0)
do_something();
else
do_something_else();
}
puede llamar myfunc en ambos sentidos y tanto son válidos
myfunc(10); //mode will be set to default 0
myfunc(10, 1);//mode will be set to 1
¿Puede usted dar algunos ejemplos relacionados con la cadena? –
void myfunc (int blah, modo char [] = NULL) –
'NULL' significa un puntero NULL, aunque se definiría como literal' 0'. No es un nombre universal para el cero constante. Para enteros (no punteros) debe usar números: 'int mode = 0'. – UncleBens
Con comas separándolos, 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
lo general mediante el establecimiento de 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;
}
parámetros de uso por defecto
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 son los malos formada
template <typename T>
void func(T a = T(), T b)
template <typename T>
void func(T a, T b = a)
Una regla importante con respecto a los valores predeterminados uso de parámetros:
parámetros predeterminados deben especificarse como máximo extremo derecho, una vez que se especifique un parámetro de valor predeterminado que no puede especificar el parámetro no predeterminado de nuevo. ejemplo:
int DoSomething(int x, int y = 10, int z) -----------> Not Allowed
int DoSomething(int x, int z, int y = 10) -----------> Allowed
¿qué es lo correcto en caso de número variable de argumentos? – Chubsdad
@Chubsdad - Ahh ... ¡mi mala declaración ambigua! ¿la segunda afirmación lo resume correctamente? "una vez que especifica un parámetro de valor predeterminado no puede especificar el parámetro no predeterminado de nuevo" –
Entonces, si entiendo correctamente si tengo múltiples parámetros opcionales, ¿debería implementarlos todos o ninguno? No puedo elegir usar 1 parámetro opcional pero no el resto? – Gerard
que puede ser interesante para algunos de ustedes que en caso de múltiples parámetros por defecto:
void printValues(int x=10, int y=20, int z=30)
{
std::cout << "Values: " << x << " " << y << " " << z << '\n';
}
Dada la función siguiente llama:
printValues(1, 2, 3);
printValues(1, 2);
printValues(1);
printValues();
La siguiente salida es producido:
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/
Esto es lo que estaba buscando. Use una función que pueda manejar diferentes números de argumentos. Declare la función con el valor predeterminado en el archivo de encabezado, luego defínelo sin los parámetros predeterminados y luego puede usarlo. No es necesario hacer una función de sobrecarga –
- 1. Cómo pasar los argumentos opcionales
- 2. ¿Puede CodeDom crear argumentos opcionales al generar un método C#?
- 3. cómo pasar argumentos variables a otro método?
- 4. Argumentos opcionales de C++/CLI
- 5. ¿Cómo puedo pasar argumentos opcionales en vista de Django
- 6. Argumentos opcionales en Objective-C 2.0?
- 7. Argumentos opcionales en defgeneric?
- 8. argumentos opcionales en Haskell
- 9. Propagating argumentos opcionales
- 10. llamados argumentos opcionales PHP?
- 11. Groovy Closure con argumentos opcionales
- 12. cómo pasar argumentos a un alias
- 13. Probando argumentos opcionales en PHP
- 14. Argumentos opcionales en WHERE Cláusula
- 15. ¿Cómo pasar argumentos a NSAction?
- 16. LaTeX Argumentos opcionales
- 17. En Clojure, ¿cómo puedo pasar múltiples argumentos a un defmethod?
- 18. ¿Cómo usar argumentos opcionales en defprotocol?
- 19. Cómo pasar argumentos a un constructor en un IOC-framework
- 20. ¿Cómo se crean argumentos opcionales en php?
- 21. Cómo pasar argumentos cotizados a GNU Parallel
- 22. Rieles: ¿Puedes pasar argumentos al método after_create?
- 23. ¿Cómo pasar un evento a un método?
- 24. pasar todos los argumentos a un constructor
- 25. ¿Cómo omitiría argumentos opcionales en una llamada a función?
- 26. Argumentos con nombre opcionales en Mathematica
- 27. Cómo pasar un número variable de argumentos a ant exec
- 28. ¿Cómo pasar argumentos en @selector?
- 29. ¿Cómo pasar un método a qsort?
- 30. ¿Cómo creo una función de Python con argumentos opcionales?
posible duplicado de [Valor por defecto del parámetro de función] (http://stackoverflow.com/questions/2842928/default-value-of-function-parameter) –
no pasa parámetros de opción. Usted pasa argumentos opcionales! – Chubsdad
Para obtener un control más explícito que el proporcionado al reservar los valores centinela, consulte boost :: optional <>. –