我有一个类A
,它有一个名为openFile(const char * name)
的函数,可以打开一个文件。
我有两个子课程Reader
和Writer
Reader
以阅读模式打开文件。
Writer
以书写模式打开文件。
我正在使用fopen
打开文件。
我想在读取模式或写入模式下打开此文件,具体取决于调用此方法的子类。
是否可以在不向父类发送任何额外参数的情况下执行此操作?
答案 0 :(得分:1)
当然,类似这样的东西正是继承的意思:
class A {
public:
virtual void openFile(const char* name) = 0;
// If A cannot open a file on its own, else implement it
// rest of implementation
};
class Reader : public A {
public:
virtual void openFile(const char* name) {//open file in read mode}
//rest of implemenation
};
并处理Write
类比。然后,给定指向或指向其中一个孩子的A*
或A&
类型的指针或引用,将选择正确的函数:
A* a1 = new Reader{};
A* a2 = new Writer{};
a1->openFile("test.in"); // calls Reader.openFile()
a2->openFile("test.out"); // calls Writer.openFile()