c++ - 在这里使用虚函数的地方

标签 c++ unix inheritance polymorphism

我想使用继承和多态性创建一个虚构的小型 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/

相关文章:

C++ 包装器模板 : how to pass it as a template parameter?

c++ - cmake 无法在自定义位置或库存位置找到 boost

c++ - GCC 中的 "empty base optimization"是否可配置?

ruby - 是否有任何用于 Windows 和 Unix 的远程脚本编写的框架?

ruby - 您是否曾在任何 Ruby 代码中使用过 "class instance variable"?

c++ - mysql_query 无法正确保存数据

linux - 有人可以向初学者提供有关 Hadoop 工作原理的高级、简单的解释吗?

linux - 如何仅使用 grep 提取模式

c++ - 实现基类方法以访问派生类的属性

c++ - 具有抽象中间类的虚拟继承