c++ - 将类常量存储在数据成员中还是方法中更好?

标签 c++ constants members

我最近编写了一个渲染 B 样条曲线的类。这些曲线由许多控制点定义。本来我打算用八个控制点,所以我在类里加了一个常量,像这样:

class Curve
{
   public:
      static const int CONTROL_POINT_COUNT = 8;
};

现在我想扩展这个类以允许任意数量的控制点。所以我想将其更改为:

class Curve
{
   public:
      int getControlPointCount() {return _controlPointCount;}
};

问题是一开始就在方法中存储常量是否更好,以促进适应性。换句话说,这样开始不是更好吗:

class Curve
{
   public:
      int getControlPointCount() {return 8;}
};

这样做的好处是,我可以只更改相关方法中的一个符号,而不用移动常量等。

这是好事还是坏事?

最佳答案

int getControlPointCount() {return _controlPointCount;}

这是一个访问器。正如 litb 指出的那样,为访问器交换 const static 并不是真正的收获。您真正需要面向 future 的可能是一对访问器和修改器。

int getControlPointCount() {return _controlPointCount;} // accessor

我还会为访问器添加一个设计常量并使其成为:

int getControlPointCount() const {return _controlPointCount;} // accessor

和相应的:

void setControlPointCount(int cpc) { _controlPointCount = cpc;} //mutator

现在,与静态对象的最大区别在于控制点计数不再是类级属性,而是实例级属性。这是一个设计更改。你想要这样吗?

Nit:您的类级别静态计数是public,因此不需要访问器。

关于c++ - 将类常量存储在数据成员中还是方法中更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/647648/

相关文章:

c++ - 使用 && 和 || 有什么区别在 do...while 循环中?

c++ - 如何使arduino无人机具有侧倾,俯仰和偏航值稳定?

.net - 为什么在静态方法中可以使用 const 变量?

c - 在 C 中将 & (addressof) 与 const 变量一起使用

php - PHP/MySQL 的隐私选项

c++ - 求数次幂的递归函数

c++ - avl树中删除过程的实现

javascript - 在 HTML 中定义常量

c++ - 尝试将指针作为参数传递给指向文件的 fstream 成员

C++ - 销毁顺序 - 函数的静态成员在主类析构函数之前被销毁