<TABLE style="TABLE-LAYOUT: fixed">
虚函数和继承的实现:
class File {
public:
virtual void Open() = 0;
virtual void Save() = 0;
virtual void SaveAS(String&) = 0;
virtual void Close() = 0;
};
class TextFile:public File{
public:
void Open();
void Save();
void SaveAS(String&);
void Close();
};
class ImageFile:public File{
public:
void Open();
void Save();
void SaveAS(String&);
void Close();
};
// user menu selection to open the file
void menu_open_file(File f_ptr){
f_ptr->Open();
….
…
}
By using the above code, you would have the following:
File file_ptr = new TextFile();
menu_open_file(file_ptr);//open the text file
.
.
file_ptr = new ImageFile();
menu_open_file(file_ptr);//open the image file
模板的实现:
class TextFile{
public:
void Open();
};
class ImageFile{
public:
void Open();
};
//user menu selection to open the file
template<typename T> void menu_open_file(T file){
file.Open();
}
Using the code:
TextFile txt_file;
ImageFile img_file;
menu_open_file(txt_file); //open the text file
menu_open_file(img_file); //open the image file