c++ - C++中的类系统架构
问题描述
对于我最新的项目,我有一堂课
class Parent {
public:
// class constructor
Parent();
// member function
double fun(double x)
};
和另一个班级
class Child {
private:
int type;
public:
// class constructor
Child(int itype);
};
我知道我可以Parent
通过指定继承函数,class Child : public Parent
以便我的类的实例child
可以调用fun
. 但是,我希望该函数fun
根据type
. 例如,如果我的Child
类的实例由Child nChild(1);
调用初始化,nChild.fun(5)
则应返回 的平方根,而通过调用5
初始化类应返回对数,依此类推。Child nChild(2);
nChild.fun(5)
5
我如何设计一个具有依赖关系的类系统,使得父类中的函数取决于子类的值?这是否有意义,或者是或通常建议不要使用这种架构?请注意,我不是 C++ 专家。
解决方案
您可以在父类中保留 aprotected: int myType;
并在派生类中使用它来打开。然而,更好的设计是为每种类型创建一个不同的派生类来覆盖该fun()
方法。
class Parent
{
public:
Parent();
virtual double fun(double x) = 0;
};
class ChildLog : public Parent
{
public:
ChildLog();
double fun(double x)
{
// return log(x)
}
};
class ChildSqrt : public Parent
{
public:
ChildSqrt();
double fun(double x)
{
// return sqrt(x)
}
};
推荐阅读
- c++ - 使用 static_cast 从 int 转换为 float 时输出不正确
C++ - javascript - 对 SharePoint 列表的 POST 请求:方法 GetByTitle 中不存在参数 __metadata
- java - 结合 Mono 布尔结果
- python - 来自 Python 的 SharePoint Online 访问令牌
- android - Moshi - Android Studio Canary Alpha12 - ExternalSynthetic0 被多次定义
- graphdb - 如何在 graphdb.home 之外添加新的存储库
- c++ - 从 Sublime Text 编译(Windows 10):g++:找不到命令
- r - 数据框中的日期规范
- r - How to remove 99th percentile outliers in R
- authentication - 仅通过一个秘密字符串验证 api 时,拥有密钥和秘密有什么好处?