![]() |
2
13
编辑:就填充而言,不要求填充的内容相等。从理论上讲,填充也有可能是某种陷阱表示,它会导致一个信号,抛出一个异常,或者其他类似的顺序,如果你想看它的话。为了避免这种陷阱表示,您需要使用类似cast的方法来将其视为
还要注意的是,作为相同类型的对象 不 必然意味着使用相同对齐的构件。这是一种常见的实现方法,但编译器也完全有可能根据“认为”特定对象将被使用的频率使用不同的对齐方式,并包含某种标记 在里面 这两种情况都不太可能发生,也不常见,但我想不出标准中有什么禁止它们的。 |
![]() |
3
3
即使对于POD,==运算符也可能是错误的。这是由于结构的对齐,如下面的一个在我的编译器上占用8字节。
|
![]() |
4
2
这是非常危险的,因为编译器不仅会对普通的旧结构使用这些定义,而且会对忘记定义的任何类(无论多么复杂)使用这些定义
总有一天,它会咬你。 |
![]() |
5
0
e、 g.如果在类中比较的任何成员都是浮点数。
通常,这些数字应与适当的公差进行数字比较。 |
![]() |
6
0
任何包含单个指针的结构或类都会立即导致任何有意义的比较失败。这些操作符只适用于任何纯旧数据类或POD类。另一位回答者正确地指出了浮点是一种情况,即使它不成立,填充字节。 简而言之:如果这是一个聪明的想法,那么这种语言会像默认的复制构造函数/赋值操作符一样。 |
![]() |
Noah Wilder · Swift中元组的操作符重载 7 年前 |
![]() |
Salman · 指向具有数组索引运算符重载的类的指针 7 年前 |
![]() |
Nom OnTheCookie · 使用向量重载C++输出 7 年前 |
![]() |
J. Doe · C++重载:从友元函数切换到成员函数 7 年前 |
![]() |
Ana · 使用操作符重载添加存储在vector中的类对象 7 年前 |
![]() |
Matthew · 重载运算符|用于固定大小的阵列? 7 年前 |
![]() |
Martin Žid · 重载运算符+=具有两个类 7 年前 |