为什么 string::compare返回一个 int而不是像 short或 char这样的小型类型?我的理解是,这个方法只返回 -1、0或1。
第二部分,如果我要设计一个比较方法,比较两个 Foo类型的对象,并且我只想返回 -1、0或1,那么使用 short或 char通常是一个好主意吗?
编辑: 我已经更正,string::compare不返回 -1,0,或1,它实际上返回一个值 > 0,< 0或0。谢谢你们让我排队。
答案似乎是粗略的,没有理由返回一个小于 int的类型,因为返回值是“ rvalue”,而这些“ rvalue”不能从小于 int (4字节)的类型中获益。此外,许多人指出,大多数系统的寄存器大小可能是 int,因为这些寄存器将被填满,无论你给他们1,2或4字节的值,没有真正的优势,返回一个较小的值。
编辑2: 事实上,当使用诸如对齐、掩码等较小的数据类型时,似乎会有额外的处理开销。一般的共识是,存在较小的数据类型是为了在处理大量数据时节省内存,例如在处理数组时。
今天学到了一些东西,再次感谢大家!