Una clase anónima es una clase que no tiene nombre. C++ admite esta función.
- Estas clases no pueden tener un constructor pero pueden tener un destructor.
- Estas clases no se pueden pasar como argumentos a las funciones ni se pueden usar como valores de retorno de las funciones.
Ejemplos para ilustrar Clases Anónimas
- Creating single object of Anonymous Class : In the first Example, Anonymous class is created with object name obj1. The scope of the obj1 is throughout the program. So, we can access this into the main function. In main, using obj1, a call is given to member functions of the anonymous class.
// CPP program to illustrate
// concept of Anonymous Class
#include <iostream>
using
namespace
std;
// Anonymous Class : Class is not having any name
class
{
// data member
int
i;
public
:
void
setData(
int
i)
{
// this pointer is used to differentiate
// between data member and formal argument.
this
->i = i;
}
void
print()
{
cout <<
"Value for i : "
<<
this
->i << endl;
}
} obj1;
// object for anonymous class
// Driver function
int
main()
{
obj1.setData(10);
obj1.print();
return
0;
}
Output :
Value for i : 10
- Creación de dos objetos de clase anónima: en el segundo ejemplo, creamos dos objetos obj1 y obj2 para la clase anónima y llamamos a las funciones miembro de la clase. El alcance de obj1 y obj2 se encuentra en todo el programa. Asimismo, podemos crear múltiples objetos para una clase anónima.
// CPP program to illustrate
// concept of Anonymous Class
#include <iostream>
using
namespace
std;
// Anonymous Class : Class is not having any name
class
{
// data member
int
i;
public
:
void
setData(
int
i)
{
// this pointer is used to differentiate
// between data member and formal argument.
this
->i = i;
}
void
print()
{
cout <<
"Value for i : "
<<
this
->i << endl;
}
} obj1, obj2;
// multiple objects for anonymous class
// Driver function
int
main()
{
obj1.setData(10);
obj1.print();
obj2.setData(20);
obj2.print();
return
0;
}
Producción :
Value for i : 10 Value for i : 20
- Restricción del alcance de la clase anónima: para restringir el alcance de los objetos de la clase anónima, podemos tomar la ayuda de typedef. En el tercer ejemplo, al usar typedef podemos darle un nombre conveniente a la clase y usar ese nombre que hemos creado para múltiples objetos obje1 y obj2 para la clase anónima. Aquí podemos controlar el alcance de los objetos obj1 y obj2, que están dentro de la función principal.
// CPP program to illustrate
// concept of Anonymous Class
// by scope restriction
#include<iostream>
using
namespace
std;
// Anonymous Class : Class is not having any name
typedef
class
{
// data member
int
i;
public
:
void
setData(
int
i)
{
// this pointer is used to differentiate
// between data member and formal argument.
this
->i = i;
}
void
print()
{
cout <<
"Value for i :"
<<
this
->i << endl;
}
} myClass;
// using typedef give a proper name
// Driver function
int
main()
{
// multiple objects
myClass obj1, obj2;
obj1.setData(10);
obj1.print();
obj2.setData(20);
obj2.print();
return
0;
}
Producción :
Value for i : 10 Value for i : 20
Publicación traducida automáticamente
Artículo escrito por AlankarShelar y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA