C ++算术运算符是否能够在自定义类中进行积极优化?

问题描述 投票:-1回答:1

C ++编译器可以使用标准数据类型(内置整数和浮点类型)的算术数学表达式来触发积极的优化。在这些情况下,编译器可以预先计算文字常量,重新排序操作,甚至完全更改操作等。(并且在某些情况下,甚至可能偏离标准合规性,例如-Ofast优化级别。)

但是现在假设您为标量编写了自定义类库,并为它们实现了算术运算符,甚至为常量定义实现了自己的user-defined literals(例如,您正在为任意大的整数和浮点值实现类。 )。

当操作数是您的自定义类的对象时,C ++编译器将能够积极优化算术数学表达式吗?编写课程时是否需要考虑到这一点?关于来自类的对象的常量的操作怎么样,它们可以由编译器预先计算吗?

EDIT:

一些评论要求我想到某些类的示例。例如,考虑以下内容:

a]

一个256位带符号整数的软件实现,其中实现了所有一元和二进制算术运算符(在软件中),并且还具有文字常量(通过用户定义的文字)。 C ++编译器是否能够对使用我的256位整数的数学表达式和使用内置整数类型的数学表达式执行相同的优化?

b]

一种64位IEEE浮点类型的软件实现,可以根据需要透明地映射到主机double硬件实现,以便用户可以选择(在编译时)是否使用软件实现或内置硬件实现。这是与上面的256位整数不同的示例,因为如果在编译时选择这样做,则可能会映射到内置类型。

非常感谢!

C ++编译器可以使用标准数据类型(内置整数和浮点类型)的算术数学表达式来触发积极的优化。在这些情况下,编译器可以预计算...

c++ operators literals arithmetic-expressions
1个回答
0
投票

关于运算符重载或用户定义的文字没有什么特别的。

© www.soinside.com 2019 - 2024. All rights reserved.