EEDD UJA
![]() |
![]() |
![]() |
Título del Test:![]() EEDD UJA Descripción: Estructura de datos. Plantillas |




Comentarios |
---|
NO HAY REGISTROS |
las plantillas de función permiten definir funciones genéricas que trabajan con tipos de datos diferentes sin necesidad de sobrecargar la función. v. f. Una plantilla de clase solo puede usar tipos de datos primitivos como parámetros. v. f. El compilador genera una versión específica de una plantilla de función solo cuando se instancia con un tipo específico. v. f. Se puede especializar una plantilla de clase solo para un tipo específico, como int, utilizando la palabra clave template<>. v. f. La sobrecarga de funciones no puede coexistir con plantillas de funciones en el mismo programa. v. f. En una plantilla de clase, es obligatorio definir todas las funciones miembro dentro del archivo de cabecera. v. f. Se puede definir una plantilla de función que acepte múltiples parámetros de tipos distintos. v. f. Una plantilla de clase puede contener un tipo de datos no genérico como parámetro. v. f. ¿Qué significa el siguiente código? template <typename T> void func(T x) { std::cout << x; } func<int>(5);. La función func es invocada con un argumento de tipo int. La función func no compila porque T no está definido. La función func es invocada, pero T debe especificarse manualmente. El código tiene un error de sintaxis. Cuál es el propósito de la siguiente línea de código? template<typename T> class MyClass<T*>;. Declarar una plantilla de clase especializada para punteros. Declarar una plantilla de clase para tipos primitivos. Generar un error en el compilador. Nada, la línea no tiene ningún efecto. ¿Cuál es la salida del siguiente código? template<typename T> void func(T x) { std::cout << "General template"; } template<> void func<int>(int x) { std::cout << "Specialized template"; } int main() { func(5); }. General template. Specialized template. Error de compilación. Undefined behavior. ¿Qué sucede si se instancia una plantilla con un tipo no compatible?. Se produce un error de compilación. La plantilla se adapta al tipo automáticamente. Se produce un error en tiempo de ejecución. No ocurre nada, la plantilla se ignora. Dado el siguiente código: template<typename T> class MyClass { public: static int value; }; template<typename T> int MyClass<T>::value = 0; int main() { MyClass<int>::value = 5; MyClass<float>::value = 10; std::cout << MyClass<int>::value; }. 0. 5. 10. Error de compilación. ¿Cuál es la diferencia entre una plantilla y una especialización parcial de una clase?. La especialización parcial permite adaptar una plantilla para un subconjunto de tipos. La especialización parcial requiere la palabra clave explicit. La especialización parcial requiere la palabra clave explicit. No hay diferencia. ¿Cuál de las siguientes opciones permite que una plantilla funcione con tipos distintos y acepte parámetros variables?. template<typename... Args>. template<Args>. template<variadic>. template<...Args>. Las plantillas en C++ pueden ser especializadas para tipos concretos, lo que permite un comportamiento diferente según el tipo de dato que se pase como parámetro. v. f. Las plantillas pueden ser especializadas para tipos específicos usando la sintaxis template<>. v. f. La especialización parcial de plantillas de clase no está permitida en C++. v. f. En C++, si se pasa un tipo primitivo a una plantilla de clase, no se puede hacer una especialización de la plantilla para ese tipo. v. f. Las plantillas de función tienen la capacidad de deducir el tipo de datos automáticamente cuando se pasa un parámetro al invocar la función. v. f. El uso de plantillas de funciones y clases puede causar problemas de duplicación de código, ya que se generan instancias separadas para cada tipo diferente que se usa. v. f. Es posible usar plantillas de función con un número variable de parámetros en C++ mediante el uso de ... (ellipsis). v. f. El compilador de C++ no permite la especialización de plantillas para tipos no definidos. v. f. Cuál de las siguientes declaraciones es correcta para una plantilla de función en C++?. template<class T> void func(T a) {}. template<void T> func(T a). template<function T> void func(T a). template<typename T> void func(). Dado el siguiente código: template <typename T> void func(T x) { std::cout << x; } template <> void func<int>(int x) { std::cout << "Specialized template"; } int main() { func("Hello"); func(5); } ¿Cuál es la salida?. HelloSpecialized template. Specialized templateHello. Specialized template. Error de compilación. Dado el siguiente código con una plantilla de clase: template<typename T> class MyClass { public: static int value; }; template<typename T> int MyClass<T>::value = 0; ¿Qué sucede si creas instancias de MyClass con diferentes tipos?. Todas las instancias compartirán la misma variable value. . Cada tipo tendrá su propia instancia de la variable estática value. La variable value se ignora en todas las instancias. El código tiene un error de compilación. En el siguiente código: template<typename T> class MyClass { public: T val; MyClass(T v) : val(v) {} }; MyClass<int> obj(10); ¿Cuál es el tipo de obj.val?. int. T. MyClass<T>. void. ¿Cuál es el resultado de intentar usar una plantilla de clase no especializada para un tipo determinado sin proporcionar una especialización explícita?. El compilador dará un error porque no se puede usar una plantilla no especializada. El compilador elegirá automáticamente la plantilla general. El código no compilará sin importar qué. El código producirá un comportamiento indefinido. Dado el siguiente código de plantilla: template<typename T> void print(T a) { std::cout << a << std::endl; } ¿Qué tipo de parámetros puede aceptar la función print?. Solo tipos primitivos como int, char, etc. Solo tipos de datos definidos por el usuario. Tipos de datos primitivos, estructuras, clases y objetos(con el operator<< definido). Solo cadenas de texto (std::string). Si se crea una especialización parcial de una plantilla de clase para tipos punteros, ¿cómo sería la declaración? template <typename T> class MyClass {}; template <typename T> class MyClass<T*> {};. template <typename T*> class MyClass {};. template <T*> class MyClass {};. template <typename T> class MyClass<T*> {};. template <typename T> class MyClass<> {};. Un patrón de clase instanciado para el tipo T=int puede que no compile al instanciarlo para T=MiClase. v. f. Una plantilla de clase debe instanciarse para su uso con tipos primitivos como int o float. v. f. |