gpt4 book ai didi

c++ - getter 的成本是零吗?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:58:25 25 4
gpt4 key购买 nike

我有一个简单的类:

class A {
public:
int get() const;

private:
void do_something();
int value;
}

int A::get() const {
return value;
}

getter 函数简单明了。 Getters 将使用它们,所以在 do_something 中我应该使用 get() 来访问 value。我的问题是:编译器是否会优化 getter,所以它等同于直接访问数据?或者如果我直接访问它我仍然会获得性能(这意味着更糟糕的设计)?

A::do_something()
{
x = get();
// or...
x = value;
}

最佳答案

当方法不是虚方法时,编译器可以优化它。即使方法不是 inline 并且在单独的 .cpp 文件中定义,好的编译器(具有链接时优化)也可以进行优化。不太好的只有在类定义内或头文件中使用 inline 关键字声明时才能这样做。对于虚拟方法,这取决于情况,但很可能没有。

关于c++ - getter 的成本是零吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7873728/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com