例子:
测试代码:
#include <iostream> using namespace std; //书类Book class Book { private: int width; int height; public: virtual void madeByWood() { cout<<"I'm made by wood!"; } virtual void setI(int w,int h) { width=w; height=h; } virtual int getW() { return width; } virtual int getH() { return height; } }; //电子书类E_book class E_book:public Book { public: void madeByWood() { cout<<"I'm not made by wood!"; } void setI(int w,int h) { Book::setI(0,0); } int getW() { return Book::getW(); } int getH() { return Book::getH(); } }; //测试类TextBook class TextBook { public: void caleArea(Book &book) { try { if(book.getW()==0&&book.getH()==0) throw 0; int area=book.getW()*book.getH(); cout<<"书的面积为:"<<area<<endl; } catch(int) { cout<<"An error occured!"<<endl; } } }; int main() { Book b; b.setI(8,12); E_book e; e.setI(0,0); TextBook t; t.caleArea(b); t.caleArea(e); return 0; }
运行结果:
里氏替换原则: