19得票4回答
一个类中使用联合的用法

我看到了以下代码:class A { private: union { B *rep; A *next; }; // no variables of this anonymous defined! void func() { ...

19得票3回答
C++11中提出了什么是无限制联合体?

我了解到C++11中提出了非限制性联合体(unrestricted unions)作为其功能之一。请问有人能够解释其语义以及其提供的优势吗?

18得票6回答
使用联合体可以访问单个位吗?

我正在编写一个C程序。我想要一个变量,既可以像char一样访问,又可以访问特定的位。我在考虑可以使用联合体来实现这个需求...typedef union { unsigned char status; bit bits[8]; }DeviceStatus; 但编译器不喜欢这样...

18得票4回答
Go 中联合的最佳实践

Go没有联合体。但在许多地方,联合体是必需的。 XML过度使用联合或选择类型。我试图找出绕过缺少联合体的首选方式。例如,我尝试编写用于XML标准中非终端Misc的Go代码,它可以是注释、处理指令或空白。 编写三种基本类型的代码非常简单。它们映射到字符数组和结构体。type Comment C...

18得票2回答
零成本属性与数据成员语法

我重新创造了这种零成本属性的方法,并使用了数据成员语法。我的意思是用户可以编写以下内容: some_struct.some_member = var; var = some_struct.some_member; 这些成员访问会重定向到零开销的成员函数。 虽然初步测试表明该方法在实践中...

17得票11回答
联合体与空指针的比较

使用void*和union有什么区别?例如:struct my_struct { short datatype; void *data; } struct my_struct { short datatype; union { char* c;...

17得票4回答
通过联合类型进行const强制转换是否属于未定义的行为?

与 C++ 不同,C 没有 const_cast 的概念。也就是说,没有有效的方式将带 const 限定符的指针转换为不带限定符的指针:void const * p; void * q = p; // not good 首先: 这种类型转换是否真的是未定义行为? 无论如何,GCC都会对...

17得票4回答
有没有一种优雅的方式在C++中交换引用?

有时类会引用其他类。对于这些类来说,实现std::swap()并不是一件简单的事情,因为这样做会导致交换原始实例而不是引用。下面的代码说明了这种行为:#include <iostream> class A { int& r_; public: A(int&am...

17得票2回答
使用联合体在两个具有共同初始序列的结构体之间进行转换是否是合法且定义良好的行为(见示例)?

我有一个API,其中包含一个公共结构A和一个内部结构B,并且需要能够将结构B转换为结构A。以下代码是否在C99(和VS 2010/C89)和C++03/C++11中合法且具有良好定义的行为?如果是,请解释什么使它具有良好的定义。如果不是,则转换这两个结构之间最有效和跨平台的方法是什么?stru...

16得票5回答
使用联合体代替强制类型转换是否定义良好?

今天早上我和同事讨论了一下一个用于检测字节序的“编程技巧”的正确性。 这个技巧是:bool is_big_endian() { union { int i; char c[sizeof(int)]; } foo; foo.i = 1; return (f...