C++ 匿名结构体
本文介绍了 C++ 中匿名结构的使用。
C++ 中的匿名结构体
C++ 不支持匿名结构体,因为 C 语言也不支持匿名结构,但与 C 不同,C++ 确实支持匿名联合。根据关于结构和联合的 ANSI C 和 C++ 标准:
- ANSI C++ 匿名联合:支持
- ANSI C++ 匿名结构:不支持
- ANSI C 匿名联合:支持
- ANSI C 匿名结构:不支持
C++ 不支持匿名结构体,因为 C 不支持它,这是兼容性所必需的。 C++ 中没有使用匿名结构,但它提供了一些替代方案。
例如,请参阅下面的代码。
struct DemoVector {
float v[3];
float &operator[] (int x) {
return v[x];
}
float &a() {
return v[0];
}
float &b() {
return v[1];
}
float &c() {
return v[2];
}
};
上面的代码为用户定义类型提供了类似于匿名结构的功能。 使用 C++ 中的联合可以完成类似的事情。
请参阅下面的代码。
union DemoVector {
struct { float a, b, c; } ;
float v[3] ;
};
现在 ISO C11、gcc 和 Apple 的 llvm 允许匿名结构,但 ISO C++11 不支持。
相关文章
在 C++ 中实现具有多个条件的 if 语句
发布时间:2023/08/26 浏览次数:184 分类:C++
-
C++ 逻辑运算符 && 或 || 可在 if 语句中使用以同时检查多个条件。本文将详细讨论如何在 C++ 中使用具有多个条件的 if 语句,并结合相关示例。
C++ 中的运算符优先级和结合性
发布时间:2023/08/26 浏览次数:178 分类:C++
-
本文将讨论 C++ 中的运算符以及它们在表达式中使用时如何求值。 它们的操作有特定的规则,因此我们将研究它们以了解使用 C++ 运算符的表达式求值。C++ 中的运算符
C++ 中的箭头运算符与点运算符
发布时间:2023/08/26 浏览次数:74 分类:C++
-
要了解点运算符与箭头运算符的不同之处,让我们首先了解这两个运算符的基础知识。C++ 中的点 (.) 运算符 C++ 中的点 (.) 运算符也称为类成员访问运算符,有助于访问任何给定类的公共成员。
在 C++ 中重载括号运算符
发布时间:2023/08/26 浏览次数:103 分类:C++
-
这个简单的编程指南将括号 ([]) 运算符重载为类对象的 getter 和 setter。首先,我们简单介绍一下运算符重载。C++ 中的运算符重载
C++ 中的一元否定运算符
发布时间:2023/08/26 浏览次数:135 分类:C++
-
一元减号运算符用于对数字取负,当它在变量之前使用时,它会对其值取负。一元减号运算符表示 C++ 中的前缀 - 符号。 必须在数字前加上 - 号才能将其取反;
在 C++ 中实例化模板类
发布时间:2023/08/26 浏览次数:186 分类:C++
-
模板类用于创建共享相同实现的新类。 它们主要用于创建提供特定类型的通用实现的抽象基类。模板类是通过为所有模板类方法指定数据类型和参数来实例化的。 然后,实例化的类可以用作程
在 C++ 中删除文件
发布时间:2023/08/26 浏览次数:102 分类:C++
-
文件中的数据不像集成开发环境 (IDE) 中计算机程序生成的输出那样易失。 但是,它是永久性的,用户可以长期检索和使用它。我们可以在 C++ 中执行的文件处理操作包括读取、创建、写入、更
C++ 中的多个代码文件
发布时间:2023/08/26 浏览次数:137 分类:C++
-
本文是关于在单个 C++ 程序中使用多个文件。 对于较大且冗长的项目来说,将所有代码写入一个文件中会变得很麻烦,因此我们将学习如何分离项目中的文件并使其更易于管理且易于重构。
在 C++ 中读取和写入文件位
发布时间:2023/08/25 浏览次数:156 分类:C++
-
在 C++ 中,诸如文本文件压缩之类的过程需要读取文件中的位并将其写入文件中。 在本文中,您将学习如何在 C++ 中毫无错误地读取或写入文件位。