I have seen anonymous classes in C++
code on Quora. It\'s successfully compiled and run.
Code here:
#inclu
In C++, an anonymous union is a union of this form:
union { ... } ;
It defines an unnamed object of an unnamed type. Its members are injected in the surrounding scope, so one can refer to them without using an <object>.
prefix that otherwise would be necessary.
In this sense, no anonymous classes (that are not unions --- in C++ unions are classes) exist.
On the other hand, unnamed classes (including structs and unions) are nothing unusual.
union { ... } x;
class { ... } y;
typedef struct { ... } z;
x
and y
are named object of unnamed types. z
is a typedef-name that is an alias for an unnamed struct. They are not called anonymous because this term is reserved for the above form of a union.
[](){}
Lambdas are unnamed objects of unnamed class types, but they are not called anonymous either.
Not only that, you can create more instances of the class by using decltype
.
#include <iostream>
class
{
public:
int val;
} a;
int main()
{
decltype(a) b;
a.val = 10;
b.val = 20;
std::cout << a.val << std::endl;
std::cout << b.val << std::endl;
return 0;
}
Output:
10
20