当前位置:  开发笔记 > 编程语言 > 正文

优化器:用const对象替换const引用

如何解决《优化器:用const对象替换const引用》经验,为你挑选了1个好方法。

钱德勒卡鲁斯在他的谈话对编译器的优化表示,编译器在与按引用传递参数优化功能可怕.我可以理解,当参数是非const引用时很难,因为编译器必须处理内存,或者参数的类型很复杂(一些奇怪的结构或类).但是如果参数是const引用而内置类型真的有问题吗?优化器可以代替const float&const float?启用S​​SE指令后,它可能会更有帮助,因为编译器可以正确地为它们对齐数据.



1> dasblinkenli..:

优化器可以代替const float&const float

不,他们不能这样做,因为它可能会改变程序的语义.甲const参考仍然是一个参考.它不能被价值取代.考虑这个例子:

void foo(const float& x, float a[]) {
    cout << x << endl;
    a[0] += 10.5;
    cout << x << endl;
}

int main() {
    float a[1] = { 3.25 };
    foo(a[0], a);
    return 0;
}

这打印

3.25
13.75

演示1

如果您更改const float&const float,其结果将是

3.25
3.25

演示2

这里的问题是a[0]相同的x,但是连接是由调用者建立的,它在优化器的控制范围之外.

推荐阅读
牛尾巴2010
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有