c – 受保护的变量命名和标准

我遇到了这个引入可迭代队列的 post. OP在实现中使用了来自std :: queue的名为c的受保护变量.

这完全有效吗?这个变量在所有实现中都具有相同的名称吗?换句话说,标准是否清楚地表明该变量必须命名为c?

解决方法

作为参考,std :: queue的确切定义列在 here.所以在回答

In other words,does the standard state clearly that this variable must be named c?

是的,在这种情况下(和其他容器适配器类似);

template <class T,class Container = deque<T>>
  class queue {
  protected:
    Container c;
    // ...
  };

但是,一般而言,受保护和私有名称和成员的名称不是标准化的,因为这些类型并非都是为了派生而构建的,并且实现是一个实现细节(并且不构成公共API的一部分);例如std::vector未列出任何受保护的名称.

一些std容器和类确实定义了受保护成员的名称,特别是想到了iostreams库 – 基本上是要从中派生的类型.

作为后续行动 – 所有编译器/库都使用c吗?似乎至少主流的那些(libstdc,libc和MSVC). libstdc很有意思,它包含变量上的follow comment;

06001

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...