c++ - 需要一些关于如何使用抽象类处理项目的帮助
问题描述
需要帮助创建一个将对字符串执行改组的程序。它将读取两个文件;
Steps.txt - 包含要按顺序应用的几个原始洗牌步骤。在这个初始版本中,只会实现两种步骤: rev -- 反转字符串。cut n -- 将前 n 个字符移动到字符串的末尾。(如果 n 大于字符串的长度,则什么也不做。)
input.txt 包含要洗牌的字符串,每行一个。程序应该打印洗牌每个字符串的结果,每行一个(仅此而已)。例如,假设文件 steps.txt 包含以下内容: cut 1 rev cut 5
并且文件 input.txt 包含一行 abcdefgh。然后你的程序应该打印 dcbahgfe,它是通过以下步骤从输入行获得的: bcdefgha (from cut 1) ahgfedcb (from rev) dcbahgfe (from cut 5)
中间步骤不应该由程序的最终版本打印出来。这应该对输入的每一行重复。
所以基本上我需要做的是,但我对如何去做这件事感到困惑;
- 为随机播放步骤定义一个抽象类。这个类应该有一个纯虚成员函数,它接受一个字符串并对其进行转换。
- 定义这个类的两个派生类,用于上面定义的两种shuffle step。
解决方案
我相信你在问什么是抽象类,什么是纯虚成员函数。
首先,类是一组函数和属性。在现实世界中,我们有一些你可以认为是类的东西。一类的一个例子是汽车。汽车上的功能可能是:停止、前进、左转、右转等。属性可能是:颜色、品牌、型号等。
抽象类是没有任何实现的类。它只是说明了一个类应该是什么样子。抽象类的一个例子是车辆。Car 类将实现抽象类 Vehicle。
C++ 中的纯虚方法是没有定义的方法。您可以通过给它至少一个纯虚方法来将一个类定义为抽象类。这是一个例子:
class Vehicle {
public:
virtual void drive() = 0; // The 0 means it's a pure virtual, has no implementation.
}
class Car : public Vehicle {
public:
void drive(); // We are saying that we implement drive.
}
void Car::drive(){
std::cout << "Driving!\n";
}
您应该阅读类和抽象类以获得更好的理解。
推荐阅读
- java - 我不能将 JavaFX 控制器移动到不是基本包的包中。马文
- linux - Unix: 'su user' 不工作并且在 SSH 中保持 root 如果条件
- javascript - 你如何正确地推入 JavaScript 中的空数组?
- optimization - AMPL IDE 错误:IDE 找不到 AMPL 可执行文件
- excel - 找到单元格值后查找列“标题”并将标题名称传递给另一个工作表
- google-sheets - 如何在谷歌表格中总结项目的时间
- javascript - Mongoose-如何将日期限制为大于今天的日期?
- php - Twilio - 剥离入站呼叫者 ID 位,启用录音并将呼叫转移到被呼叫的原始号码
- android - 有没有办法将 ViewGroup 转换为可访问性的按钮?
- c - 开放函数中模式位的含义是什么?