我正在为形状实现一些类。有没有办法既避免代码重复又浪费内存?
基本上,我想在基类中有一个变量,它是一个常量,每个派生类只有一个拷贝(如静态成员),但每个派生类具有不同的值。
例如,我想为派生类定义作用于惯性张量的函数;对于每个形状,惯性张量是一个常数,所以我不想为每个实例都有一个相同常数的拷贝。
但是,我不想为每个派生类声明相同的变量和定义相同的函数,而是想在基类中声明一个变量并在基类中也有一个泛型函数,比如更改从世界坐标到局部坐标的惯性张量,反之亦然。
有没有办法做到这一点?
最佳答案
在基类中使用纯虚函数,并在每个派生类中覆盖它以返回适当的值。这样您就只有常量的一个拷贝,并且每个派生类都正确地定义了它。
class Base
{
public:
virtual int get_constant0() const = 0;
};
class Derived0 : public Base
{
public:
virtual int get_constant0() const { return 5; }
};
class Derived1 : public Base
{
public:
virtual int get_constant0() const { return 42; }
};
关于c++ - 如何用 const 成员和继承来避免代码重复和浪费内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8054793/