簡體   English   中英

如何避免代碼重復以及const成員和繼承浪費內存?

[英]How to avoid code repetition and wasting memory with const members and inheritance?

我正在實現一些形狀的類。 有沒有辦法避免代碼重復並同時浪費內存?

基本上,我想在基類中有一個常量,並且每個派生類(如靜態成員)只有一個副本,但每個派生類的值都不同。

例如,我想為導出類定義對慣性張量起作用的函數; 對於每種形狀,慣性張量都是一個常數,所以我不想為每個實例都復制一個相同的常數。

但是,我不想為每個派生類聲明相同的變量並定義相同的函數,而是想在基類上聲明一個變量,並在基類中也具有泛型函數,例如將慣性張量從世界到本地坐標,反之亦然。

有沒有辦法做到這一點?

在基類中使用純虛函數,並在每個派生類中重寫它以返回適當的值。 這樣,您只有一個常量的副本,並且每個派生類都正確地定義了它。

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; }
};

與您的要求無關,但與我認為您要實現的目標有關; 我將開始研究現有的實現,如果只是想知道什么不做的話,其他庫如何實現剛體類型之間的集成。

ODE庫

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM