我已经看到匿名类在C++
上Quora的代码。它已成功编译并运行。
代码在这里:
#include <iostream>
auto func()
{
class // no name
{
public:
int val;
} a;
a.val = 5;
return a;
}
int main()
{
std::cout << func().val << std::endl;
return 0;
}
那么,它在C ++中有效吗?
另外,我很好奇,可以在C ++中使用匿名类吗?
在C ++中,匿名联合是这种形式的联合:
union { ... } ;
它定义了一个未命名类型的未命名对象。它的成员被注入到周围的作用域中,因此可以在不使用<object>.
前缀的情况下引用它们。
从这个意义上讲,不存在匿名类(在C ++联合中不是联合的类)。
另一方面,未命名的类(包括结构和联合)也并不稀奇。
union { ... } x;
class { ... } y;
typedef struct { ... } z;
x
并且y
是未命名类型的命名对象。z
是typedef名称,它是未命名结构的别名。它们之所以称为匿名,是因为该术语保留用于上述形式的联合。
[](){}
Lambda是未命名类类型的未命名对象,但是它们也不被称为匿名。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句