我有一些基本的C ++代码(包含在下面)。我希望能够用自定义指令替换发生的每个乘法(包括在math.h中包含的cos函数内)。我可以直接在我的主要内容中调用自定义指令,但是' cos'仍将使用旧的乘法指令。
我考虑过做运算符重载,但我无法正常运行。
#include <iostream>
#include <string>
#include <math.h>
int main()
{
int a = 2;
int b = 5;
std::cout << "mult: " << a * b << std::endl;
std::cout << "cos: " << cos(b) << std::endl;
return 0;
}
以我想要的方式实现此自定义指令的最佳方法是什么?
答案 0 :(得分:0)
std::cos
仅为内置浮点类型float
,double
,long double
提供重载(也可以提供任何整数类型,但它可以提供#?在内部投射到double
。您不能为内置类型重载运算符。这意味着你无法做你想要的事。
你能得到的最好的方法就是编写自己的数字类,重载乘法运算符,并使用替代乘法实现为它编写自己的三角函数。
答案 1 :(得分:0)
有一种方法可以在不触及代码的情况下替换某些功能。当然,这取决于您如何构建代码。 假设您正在使用Linux,则可以使用LD_PRELOAD注入功能。
以下是关于如何做到的一个很好的解释:
如果这不完全适用于您的情况,您可以抓住一些想法或只是学习这个很酷的功能。