我想使用继承和多态性创建一个虚构的小型 unix 层次结构。
我有一个名为 File 的类,该类有以下数据成员:
-字符串 名称
类文件假设有以下操作:
-function path(返回文件的路径)
-function ls(类似于 ls 命令)
-function cd(类似于cd命令)
-function cp(将给定文件复制到当前文件)
还有其他类派生自 File 类。
*类目录是一个特殊的文件,里面可以存放很多文件。
*TextFile 类是一个包含文本的文件。
在main函数中运行的例子可以是这样的:
Direcrory mydir(“mydir”);
TextFile myText(“mytext”, ....);
mydir.cp(myText);
mydir.ls();
这是伙计们的事情。我可以在没有继承和多态性的情况下实现它。但我希望它是面向对象的。所以我有两个问题?
1-)我无法决定哪个函数应该是虚拟的。
2-)以及如何在不存储额外数据成员的情况下实现路径功能
我想了两天。但是我找不到这么好的解决方案。如果你能帮助我,我会很高兴。
提前致谢..
最佳答案
1-)I could not decide which function should be virtual.
如果你有 Base* parent = new Child()
的结构,并且你想调用 Child
的重写方法,那么这些函数应该是虚拟的。
如果你有这个结构 - 声明析构函数是虚拟的。
2-)And How to implement path function without storing an extra data member
由于路径基本上是一个字符串,您可以将路径存储在父类中。从 path
函数返回字符串,并且不要在子类中覆盖此函数。就是这样。字符串几个字节的字符串有什么问题?
如有任何疑问,只需思考“在现实生活中,它的行为是否像它?”
关于c++ - 在这里使用虚函数的地方,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34381493/