Я читал статью о интерфейсах на C++ (http://accu.org/index.php/journals/233), и я полностью потерян в той части, где говорится, что все виртуальные функции-члены должны быть закрытыми (раздел «Усиление разделения» «). Это просто не имеет смысла для меня вообще.вопросы о статье, представляющей интерфейс C++
По мнению автора, код выглядит так:
class shape {
public:
virtual ~shape();
virtual void move_x(distance x) = 0;
virtual void move_y(distance y) = 0;
virtual void rotate(angle rotation) = 0;
//...
};
class line : public shape {
public:
line(point end_point_1, point end_point_2);
//...
private:
virtual ~line();
virtual void move_x(distance x);
virtual void move_y(distance y);
virtual void rotate(angle rotation);
//...
};
Таким образом, мы имеем чистую виртуальную функцию, которая является общественным, и ее реализации (в классе линии), которая является частным.
Может ли кто-нибудь объяснить, как можно вызвать функцию move_x? Его спецификатора доступа является частным, это приведет к ошибке, если я пытаюсь сделать это:
line my_line(point(0,0), point(1,2));
my_line.move_x(-1); // does not compile
Точно так же это правильно сказать, что интерфейс рисования (см ранее в статье) не может получить доступ к этим функциям либо?
спасибо.
Я просто пытался создать код, и он не скомпилирован, потому что деструктор является закрытым ... – Patrick