我想知道以下兩個類設計選擇中的一個在性能和/或可維護性方面是否優越,或者其他問題會優於其他問題。C++類繼承設計選擇
第一種方法:
基類(父)具有私有數據成員和一個純虛擬無效的功能。子類(childA)將參數從其默認構造函數傳遞給父類,並使用父類的getter方法打印出其他值。
第二種方法:
基類(ONCLE)只由一個virual析構函數和純虛方法。子類(侄子)擁有商店作爲私人數據成員的價值,並具有自己的getter函數來執行某些計算。
下面是一些代碼:
#include <iostream>
class parent{
public:
parent(int x){ _x = x; }
virtual ~parent(){}
virtual void calc(void) = 0;
int getX(void) { return _x; }
private:
int _x;
};
class childA: public parent{
public:
childA(int x): parent(x){}
void calc(void){std::cout << "x sq: " << parent::getX()*parent::getX() << std::endl;}
};
class oncle{
public:
virtual ~oncle(){}
virtual void calc(void) = 0;
};
class nephewA: public oncle{
public:
nephewA(int x): _x(x){}
void calc(void){std::cout << "x sq: " << getX()*getX() << std::endl;}
int getX(void){ return _x; }
private:
int _x;
};
int main(int argc, char *argv[])
{
parent *first = new childA(3);
parent *second = new childB(3);
first->calc();
second->calc();
oncle *foo = new nephewA(3);
oncle *bar = new nephewB(3);
foo->calc();
bar->calc();
delete bar;
delete foo;
delete second;
delete first;
return 0;
}
總之:第一種方法就是將重點放在家長和第二子類中。
那麼是否有任何可量化的方面可以幫助我選擇兩種方法之一?
應用程序應該確定需要什麼方法。 – NathanOliver
可能轉移到[email protected] –
這個問題只是一場辯論。不應該在這一部分。 – Khaldor