小编Tha*_*ain的帖子

如何在不生成副本的情况下使用getter和setter?

我想知道如何为需要大量内存的成员变量使用getters和setters方法。通常我会像下面这样:

class A
{
private:
  BigObject object;
public:
  BigObject getObject() const
  {
    return object;
  }

  void setObject(const BigObject& object)
  {
    this->object = object;
  }
};
Run Code Online (Sandbox Code Playgroud)

但是,我相信此getter和setter将复制我不想要的BigObject。有一个更好的方法吗?

我想这样做,但是我在互联网上读到这不是一个好主意,因为如果使用不当,可能会导致分割错误:

BigObject& getObject()
{
  return object
}
Run Code Online (Sandbox Code Playgroud)

c++ getter-setter

6
推荐指数
1
解决办法
161
查看次数

在内存不足之前我可以声明多少个 const 变量?

我正在编写具有很多 const 变量(主要是整数和枚举)的代码,我想知道,是否有可以声明的最大变量数?我的想法是将这些 const 变量分配在堆栈上,这意味着我可以声明大约 1MB/4bytes = 250000 个变量(足够多),假设堆栈的大小为 1MB。我对么?

我的意思的一个简单的例子:

测试.cpp:

const unsigned int VECTOR_ID = 4;
const unsigned int MATRIX_ID = 3;

int main()
{
  std::cout << VECTOR_ID << " : " << MATRIX_ID << std::endl;
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++ stack-overflow stack constants

6
推荐指数
1
解决办法
131
查看次数

标签 统计

c++ ×2

constants ×1

getter-setter ×1

stack ×1

stack-overflow ×1