4. Desayunos Técnicos Trampas en C++ TR1 – Nivel 1 void main() { char *s = "hola!"; s[0] = 'm'; printf ("%s", s); } ¿Cuál será la salida del programa? 1) Error de compilación. 2) hola! 3) Error de ejecución. 4) mola!
5.
6. Desayunos Técnicos Trampas en C++ TR2 – Nivel 1 class A1 { virtual ~A1() { printf ("A1,"); } }; class A2 { ~A2() { printf ("A2,");} }; class B1 : public A1 { ~B1() { printf ("B1,");} }; class B2 : public A2 { ~B2() { printf ("B2,");} }; B1* b1 = new B1(); delete b1; B2* b2 = new B2(); delete b2; A1* ab1 = new B1(); delete ab1; A2* ab2 = new B2(); delete ab2; ¿Cuál será la salida del programa? 1) B1, B2, A1, A2, 2) B1, A1, B2, A2, B1, A1, B2, A2, 3) B1, A1, B2, A2, B1, A1, A2, 4) B1, A1, B2, A2, A1, A2,
7.
8. Desayunos Técnicos Trampas en C++ TR3 – Nivel 1 struct MyStruct { int array[4]; int n1; int n2; }; int main () { MyStruct str; str.n1 = 10; str.n2 = 20; str.array[3] = 3; str.array[5] = 5; printf ("%d",str.n1); printf ("%d",str.n2); printf ("%d",str.array[3]); printf ("%d",str.array[5]); } ¿Cuál será la salida del programa? 1) Error de compilación 2) 10, 5, 3, 5 3) Error en tiempo de ejecución 4) 10, 20, 3, 5 5) 10, 20, 3, Basura (variable sin inicializar)
9.
10. Desayunos Técnicos Trampas en C++ TR4 – Nivel 1 void main () { int *array = getArray (); printf (“%d",array[0]); algoritmo (); printf ("%d",array[0]); } int * getArray () { int a[3] = {1, 2, 3}; printf("%d", a[0]); return a; } void algoritmo () { int datos[10] = {11,12,13,14,15,16,17,18,19,20}; int n = datos[2] + datos[3] * datos[7]; printf ("blah blah blah "); } ¿Cuál será la salida de este programa? 1) 1, ‘INDEFINIDO’, blah blah blah, ‘INDEFINIDO’ 2) 1, ‘INDEFINIDO’, blah blah blah, 1 3) Error en tiempo de ejecución 4) 1, 1, blah blah blah, 1 5) 1, 1, blah blah blah, ‘INDEFINIDO’
11.
12. Desayunos Técnicos Trampas en C++ TR5 – Nivel 1 ¿Cuál será la salida del programa? 1) 1, 1, 1, 1, 1, 1 2) 0, 0, 0, 0, 0, 0 3) 0, 0, 1, 1, 0, 0 4) 0, 0, 1, 1, 1, 1 struct Point { int x, y; }; struct Data { Point point; Point *ppoint; int array[2]; }; void main() { Point p = {0,0}; Data d1,d2; d1.point.x = 0; d1.point.y = 0; d1.ppoint = &p; d1.array[0] = 0; d1.array[1] = 0; d2 = d1; d1.point.x = 1; d1.point.y = 1; p.x = 1; p.y = 1; d1.array[0] = 1; d1.array[1] = 1; printf ("%d %d", d2.point.x, d2.point.y); printf ("%d %d", d2.ppoint->x,d2.ppoint->y); printf ("%d %d", d2.array[0],d2.array[1]); }
13.
14. Desayunos Técnicos Trampas en C++ TR6 – Nivel 1 class A { private : static int m_refCount; int m_objNumber; public : A() { m_objNumber = ++m_refCount; } ~A() { printf ("n %d", m_objNumber); } }; int A::m_refCount = 0; ¿Cuál será la salida del programa? 1) n 1, n 2, n 3, n 4 2) n 1, n 2 3) n 1, n 2, n 1, n 2 y se queda memoria alocada 4) n 1, n 2 y se queda memoria alocada void main() { std::list<A> listaObjetos; std::list<A*> listaPunteros; listaObjetos. push_back (A()); listaObjetos. push_back (A()); listaPunteros. push_back ( new A()); listaPunteros. push_back ( new A()); }
15.
16.
17.
18. Desayunos Técnicos Trampas en C++ TR8 – Nivel 2 ///// globalvec.h #include <vector> extern std::vector< int > globalVector; //// globalvec.cpp #include "globalvec.h“ std::vector< int > globalVector; ///// main.cpp #include "globalvec.h“ class Clase { public : Clase() { globalVector. push_back (0); printf ("Constructor Clase");} }; Clase globalObj; int main() { printf ("Hello World!"); return 0; } ¿Cuál será la salida del programa? 1) Hello Word! 2) Contructor Clase Hello World! 3) Cascará 4) 50%-50% entre 2 y 3. Depende de tu compilador y de tu suerte.