Salida del programa C++ | conjunto 12

Prediga la salida de los siguientes programas C++.

Pregunta 1

#include <iostream>
using namespace std;
  
int fun(int a, int b  = 1, int c =2)
{
    return (a + b + c);
}
  
int main()
{
    cout << fun(12, ,2);
    return 0;
}

Salida: Error del compilador en la llamada de función fun(12, ,2)
Con los argumentos predeterminados, no podemos omitir un argumento en el medio. Una vez que se omite un argumento, se deben omitir todos los argumentos siguientes. Las llamadas fun(12) y fun(12, 2) son válidas.

Pregunta 2

#include<iostream>
using namespace std;
  
/* local variable is same as a member's name */
class Test
{
private:
    int x;
public:
    void setX (int x) { Test::x = x; }
    void print() { cout << "x = " << x << endl; }
};
  
int main()
{
    Test obj;
    int x = 40;
    obj.setX(x);
    obj.print();
    return 0;
}

Producción:

x = 40

El operador de resolución de alcance siempre se puede usar para acceder a un miembro de clase cuando está oculto por variables locales. Así que la línea «Prueba::x = x» es lo mismo que «esto->x = x»

Pregunta 3

#include<iostream>
using namespace std;
  
class Test 
{
private:
    int x;
    static int count;
public:
    Test(int i = 0) : x(i) {}
    Test(const Test& rhs) : x(rhs.x) { ++count;  }
    static int getCount() { return count; }
};
  
int Test::count = 0;
  
Test fun() 
{
    return Test();
}
  
int main()
{
    Test a = fun();
    cout<< Test::getCount();
    return 0;
}

Salida: dependiente del compilador
La línea «Test a = fun()» puede o no llamar al constructor de copias. Entonces, la salida puede ser 0 o 1. Si ocurre una elisión de copia en su compilador, no se llamará al constructor de copia. Si la elisión de copia no ocurre, se llamará al constructor de copia. El compilador gcc produjo la salida como 0.

Escriba comentarios si encuentra que alguna de las respuestas/explicaciones es incorrecta, o si desea compartir más información sobre los temas discutidos anteriormente.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *