c ++中的箭头('&#;;''>')中的单词是什么?

时间:2016-04-07 01:31:08

标签: c++

我正在使用C ++,无法理解箭头括号内的项目。

ReadOnlyArrayGattCharacteristic<uint8_t, sizeof(readValue)> readChar(readCharUUID, readValue);

在这个例子中,箭头括号内的内容是什么(&#34; uint8_t&#34;&amp;&#34; sizeof(readValue)&#34;是什么意思?

1 个答案:

答案 0 :(得分:3)

您可能希望详细了解文档here

<inbrackets>表示template<typename T , unsigned NUM_ELEMENTS>。根据ISO C ++(https://isocpp.org/wiki/faq/templates

  

模板是一个cookie-cutter,它指定了如何剪切cookie   所有看起来都差不多(虽然可以制作饼干   各种面团,它们都具有相同的基本形状)。在里面   同样,类模板是一个cookie切割器,用于描述如何   建立一个看起来基本相同的类的家庭,和   功能模板描述了如何构建一个类似的外观系列   功能

     

类模板通常用于构建类型安全的容器(尽管如此)   这只会触及它们的使用方式。

例如

考虑一个容器class Array,它的作用类似于整数数组:

// This would go into a header file such as "Array.h"
class Array {
public:
  Array(int len=10)                  : len_(len), data_(new int[len]) { }
 ~Array()                            { delete[] data_; }
  int len() const                    { return len_;     }
  const int& operator[](int i) const { return data_[check(i)]; }  // Subscript operators often come in pairs
  int&       operator[](int i)       { return data_[check(i)]; }  // Subscript operators often come in pairs
  Array(const Array&);
  Array& operator= (const Array&);
private:
  int  len_;
  int* data_;
  int  check(int i) const
    {
      if (i < 0 || i >= len_)
        throw BoundsViol("Array", i, len_);
      return i;
    }
};

Array float char std::string Array std::string template<typename T> T T int float的{​​{1}}重复上述内容等等,会变得单调乏味。相反,您在类定义之前添加charT可以是您想要的任何标识符,Array只是最常用的标识符,尤其是在示例中)。然后,您可以使用Array<T>而不是使用引用数据类型的Array<int>Array<float>// This would go into a header file such as "Array.h" template<typename T> class Array { public: Array(int len=10) : len_(len), data_(new T[len]) { } ~Array() { delete[] data_; } int len() const { return len_; } const T& operator[](int i) const { return data_[check(i)]; } T& operator[](int i) { return data_[check(i)]; } Array(const Array<T>&); Array(Array<T>&&); Array<T>& operator= (const Array<T>&); Array<T>& operator= (Array<T>&&); private: int len_; T* data_; int check(int i) const { assert(i >= 0 && i < len_); return i; } }; 。此外,在引用特定实例时,不是仅仅将类称为private void objectListView1_BeforeSorting(object sender, BeforeSortingEventArgs e) { _shows.OrderByDescending(s => s.Name != "News").ThenBy(s => s.Name); e.Handled = true; } ,而是在引用模板时{{1}},或{{1}},{{1}}等。

{{1}}

阅读本书将有助于http://www.amazon.com/Template-Metaprogramming-Concepts-Techniques-Beyond/dp/0321227255