Salida del programa C++ | conjunto 9

Prediga la salida de los siguientes programas C++.

Pregunta 1

template <class S, class T> class Pair
{
private:
    S x;
    T y;
/* ... */
};
  
template <class S> class Element
{
private:
    S x;
/* ... */
};
  
int main ()
{
    Pair <Element<int>, Element<char>> p;
    return 0;
}

Producción:

Compiler Error: '>>' should be '> >' within a nested template argument list

Cuando usamos plantillas anidadas en nuestro programa, debemos poner un espacio entre dos corchetes angulares de cierre, de lo contrario, entra en conflicto con el operador >>. Por ejemplo, el siguiente programa compila bien.

template <class S, class T> class Pair
{
private:
    S x;
    T y;
/* ... */
};
  
template <class S> class Element
{
private:
    S x;
/* ... */
};
  
int main ()
{
    Pair <Element<int>, Element<char> > p;   // note the space between '>' and '>'
    return 0;
}

Pregunta 2

#include<iostream>
using namespace std;
  
class Test 
{
private:
    static int count;
public:
    static Test& fun();
};
  
int Test::count = 0;
  
Test& Test::fun() 
{
    Test::count++;
    cout<<Test::count<<" ";
    return *this;
}
  
int main()  
{
    Test t;
    t.fun().fun().fun().fun();
    return 0;
}

Producción:

Compiler Error: 'this' is unavailable for static member functions

este puntero no está disponible para los métodos de miembros estáticos en C++, ya que los métodos estáticos también se pueden llamar utilizando el nombre de la clase. De manera similar, en Java, los métodos de miembros estáticos no pueden acceder a this y super (super es para la clase base o principal).
Si hacemos fun() no estático en el programa anterior, entonces el programa funciona bien.

#include<iostream>
using namespace std;
  
class Test 
{
private:
    static int count;
public:
    Test& fun(); // fun() is non-static now
};
  
int Test::count = 0;
  
Test& Test::fun() 
{
    Test::count++;
    cout<<Test::count<<" ";
    return *this;
}
  
int main()  
{
    Test t;
    t.fun().fun().fun().fun();
    return 0;
}

Producción:

Output:
1 2 3 4

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 *