c++ - 关于一篇介绍C++接口(interface)的文章的问题

标签 c++ class interface

我一直在阅读一篇关于 C++ 接口(interface)的文章 ( http://accu.org/index.php/journals/233 ),我完全迷失在它说所有虚拟成员函数都应该设为私有(private)的部分(标题为“加强分离”的部分)。这对我来说根本没有意义。

按照作者的说法,代码是这样的:

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);
  //...
};

所以我们有一个公有的纯虚函数,它的实现(在 line 类中)是私有(private)的。

谁能解释一下如何调用 move_x 函数?它的访问说明符是私有(private)的,如果我尝试这样做会导致错误:

line my_line(point(0,0), point(1,2));
my_line.move_x(-1); // does not compile

同样,绘图界面(见本文前面部分)也不能访问这些功能是否正确?

谢谢。

最佳答案

我们的想法是,您将通过对 shape 的引用或指针来使用这些方法。

shape &s = my_line;
s.move_x(-1);

这可以基于“仅显示您需要的内容”或作为一种 self 记录的形式来证明。它证明了这些方法仅以预期的方式被调用。

关于c++ - 关于一篇介绍C++接口(interface)的文章的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2153601/

相关文章:

java - Spring 数据: how to use repository's inner interfaces outside the outer class?

c++ - 三向快速排序需要更高的性能

kotlin - 接口(interface)作为 Kotlin 中类的依赖项是什么意思?

java多服务开闭原则

php - 如何为我的类/函数获取 DB-Connection

php - 为什么 PHP 不禁止我使用 Heredoc 语法初始化类属性?

C++ 嵌套类前向声明​​错误

c++ - 为什么我的原子操作以意外的顺序发生?

c++ - 如何在 Windows 下监控/记录对远程文件夹的文件访问?

c++ - 在类对象的 vector 中找到一个值