此处使用虚拟函数的位置

where to use virtual function here

本文关键字:函数 位置 虚拟      更新时间:2023-10-16

我想使用继承和多态性创建一个假想的小型unix层次结构。

我有一个名为File的类,该类具有以下数据成员:
-string名称

类File假定具有以下操作:
-函数路径(返回文件的路径)
-函数ls(类似于ls命令)
-函数cd(类似于cd命令)
-函数cp(将给定文件复制到当前文件)

还有其他派生自File类的类
*类目录是一个特殊的文件,可以在其中保存多个文件。
*类TextFile是一个包含文本的文件。

运行在主功能中的示例如下:

Direcrory mydir(“mydir”);
TextFile myText(“mytext”, ....);
mydir.cp(myText);
mydir.ls();

伙计们,事情是这样的。我可以在没有继承和多态性的情况下实现这一点。但我希望它是一个面向对象的。所以我有两个问题
1-)我无法决定哪个功能应该是虚拟的
2-)以及如何在不存储额外数据成员的情况下实现路径功能

我考虑了两天。但我找不到这么好的解决办法。如果你帮我,我会很高兴的
提前谢谢。。

1-)我无法决定哪个功能应该是虚拟的。

如果您有Base* parent = new Child()的结构,并且想要调用Child的重写方法,那么这些函数应该是虚拟的。如果你有这个结构-声明析构函数是虚拟的。

2-)以及如何在不存储额外数据的情况下实现路径功能成员

由于路径基本上是一个字符串,您可以将路径存储在父类中。返回path函数的字符串,并且不要在Child类中重写此函数。就是这样。字符串的几个字节有什么问题?

毫无疑问,只要想想"在现实生活中,它的行为像这样吗?"