我想知道以下两个类设计选择中的一个在性能和/或可维护性方面是否优越,或者其他问题会优于其他问题。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