2014-10-19 49 views
0

我有一个类A它有一个函数openFile(const char * name),它打开一个文件。如何在C++中找到哪个子类正在调用父类的函数?

我有两个子类ReaderWriter

Reader打开在阅读模式下的文件。 Writer以书写模式打开文件。

我正在使用fopen来打开文件。

我想以阅读模式或写作模式打开此文件,具体取决于哪个子类正在调用此方法。

是否可以在不向父类发送任何额外参数的情况下执行此操作?

+0

你提的问题是很明显的,我认为你没找你在互联网上自己回答,只是在这里写下你的问题。在google或bing中寻找“多态性”。 – Dakorn 2014-10-19 22:40:30

回答

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() 
相关问题