我想使用继承和多态来创建一个虚构的小unix层次结构。
我有一个名为File的类,该类具有以下数据成员:
- 字符串名称
类File假设有以下操作:
-function 路径(返回文件的路径)
-function ls (类似于ls命令)
-function cd (类似于cd命令)
-function cp (将给定文件复制到当前文件)
还有其他类派生自File类 *类目录是一个特殊的文件,可以在其中保存许多文件 * TextFile类是包含文本的文件。
在main函数中运行的示例可以如下:
Direcrory mydir(“mydir”);
TextFile myText(“mytext”, ....);
mydir.cp(myText);
mydir.ls();
这是伙计们。我可以在没有继承和多态的情况下实现它。但我希望它是面向对象的。所以我有两个问题?
1-)我无法确定哪个功能应该是虚拟的。
2-)如何在不存储额外数据成员的情况下实现路径功能
我正在考虑它两天。但我找不到这么好的解决方案。如果你帮助我,我会很高兴 提前谢谢..
答案 0 :(得分:0)
1-)我无法决定哪个功能应该是虚拟的。
如果您具有Base* parent = new Child()
的结构并且想要调用Child
的覆盖方法,那么这些函数应该是虚拟的。
如果你有这个结构 - 声明析构函数是虚拟的。
2-)如何在不存储额外数据的情况下实现路径功能 构件
由于路径基本上是一个字符串,因此您只需将路径存储在父类中即可。从path
函数返回字符串,不要在子类中重写此函数。而已。字符串的少量字节有什么问题?
有任何疑问,只要想一想“在现实生活中,它的行为是否像它一样?”