【发布时间】:2017-05-30 00:01:22
【问题描述】:
是否可以想象 C++ 编译器会优化对只设置类变量的类成员函数的函数调用?示例:
class A
{
private:
int foo;
public:
void bar(int foo_in)
{
foo = foo_in;
}
}
如果我这样做了
A test;
A.bar(5);
编译器能否对其进行优化以直接访问该成员并将其设置为这样?
【问题讨论】:
-
开启优化并查看生成的程序集。如果更现代的主要编译器之一这样做,其他编译器也会这样做。
-
它可以,你甚至可以通过在方法中添加一个“内联”说明符来暗示你强烈希望它,如果它在你的示例中默认没有它。
-
@chris 有趣的是,我通过创建一个成员函数来设置变量和一个成员函数来获取它,然后我设置它并执行
cout << [get member]并将其优化为cout << 5跨度>
标签: c++ optimization