我正在实现一些形状类.有没有办法避免代码重复和同时浪费内存?
基本上,我希望基类中的变量是一个常量,每个派生类只有一个副本(如静态成员),但每个派生类的值不同.
例如,我想定义适用于派生类的惯性张量的函数; 对于每个形状,惯性张量是一个常数,所以我不希望每个实例都有一个相同常量的副本.
但是,我不是声明相同的变量并为每个派生类定义相同的函数,而是想在基类中声明一个变量,并在基类中也有一个泛型函数,比如改变惯性张量来自世界到当地坐标,反之亦然.
有办法实现吗?
在基类中使用纯虚函数,并在每个派生类中重写它以返回适当的值.这样,您只有一个常量副本,并且每个派生类都正确定义它.
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; }
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
182 次 |
| 最近记录: |