Тема: Принцип підстановки Лісков
Розмірковуючи про принцип підстановки Лісков, я прийшов до висновку, що відкрите наслідування базового класу, в якого є віртуальні методи (не чисто віртуальні), вже порушує цей принцип. До того ж неважливо, абстрактний клас чи ні. Ну і, звичайно ж, віртуального деструктора це не стосується.
Тобто проектуємо клас з поведінкою по-замовчуванню і маємо:
class Base {
public:
  // метод, що порушує принцип підстановки Лісков
  virtual void show() { std::cout << "default base class behaviour" << std::endl; }
  virtual ~Base() {}
};
class Derived : public Base {
  class someException{};
public:
  void show();
};
void Derived::show() {
  std::srand( time( 0 ) );
  // приблизно в половині випадків може "щось піти не так"
  if ( rand() % 2 == 0 ) {
    std::cout << " -- here might be an exception" << std::endl;
//     throw (new someException);
  }
  std::cout << "derived class behaviour" << std::endl; 
}
int main( int argc, char **argv ) {
  Base b;
  Derived d;
  b.show();
  d.show();
  return 0;
}Також порушується принцип інверсії залежностей.
Тепер саме питання - я все правильно розумію? 
