3

在我之前用 CI 编写的程序中,我需要一个对象,其中包含多个“核心”数据,程序中的所有函数都可以访问这些数据,我最终选择了 astruct并且我使用了指向该结构的指针进行读取或写入数据;它既快又好,而且很便宜,因为访问指针可能是你在 C 中可以做的最便宜的事情之一,而且我从来没有找到更好的东西,所以我对这个解决方案很满意。

现在在 C++ 中我遇到了同样的问题,我需要共享一个由一些原始类型组成的状态,我很想使用所谓的 POD 之一,这基本上意味着,struct再次,但这次是为了安全起见。

假设我需要在我的程序中携带这个“Blob”数据,那么通过引用访问的结构是 C++ 中最快的东西吗?getter方法的成本是多少?

4

1 回答 1

2

如果您的 getter 代码是内联的(在头文件中),那么编译器可以消除在其输出的机器代码中调用函数的需要。

例如:

class Data
{
private:
  int number_;
public:
  int GetNumber() { return number_; }
};

编译器会看到 GetNumber 的定义,会知道它的作用很简单,以及在哪里调用了 GetNumber(),它会简单地将其替换为 number_。因此,使用 getter 与直接访问成员将产生等效的代码,并且两者都将执行相同的操作。

于 2012-10-06T12:15:40.350 回答